LINUX.ORG.RU

связь один ко многим в mysql


0

1

Доброго времени суток.

Подскажите пожалуйста правильно ли я реализую связь один ко многим в бд mysql

mysql> create table podrazdel (
    -> pod_id int(30) not null auto_increment,
    -> pod_name char(300) not null,
    -> primary key (pod_id)
    -> );
mysql> create table list (
    -> l_id int(30) not null,
    -> l_fio varchar(500),
    -> l_podr char(200) not null,
    -> l_doljn varchar(300) not null,
    -> l_phone1 char(9) not null,
    -> l_phone2 char(9),
    -> l_phone3 char(9),
    -> foreign key (l_id)
    -> references podrazdel (pod_id)
    -> on delete cascade
    -> on update cascade
    -> );

Если нет то в чём ошибка?

В мануале написано

http://otvety.google.ru/otvety/thread?tid=4eed6274ed9b0448

Однако запуская DbVisualizer Free 8,0,1 я на схеме связи не вижу.

Заранее спасибо

-> pod_id int(30) not null auto_increment,

30и значный INT? Не много-ли?

-> pod_name char(300) not null,

там до 255 в MySQL.

drBatty ★★
()
Ответ на: комментарий от getup

Спасибо но не не помогло

mysql> create table podrazdel ( 
   pod_id int(30) not null auto_increment, 
   pod_name char(200) not null, 
   primary key (pod_id)
) ENGINE=InnoDB ;
mysql> create table list ( 
     l_id int(30) not null, 
     l_fio varchar(500), 
     l_podr char(200) not null, 
     l_doljn varchar(300) not null, 
     l_phone1 char(9) not null, 
     l_phone2 char(9), 
     l_phone3 char(9), 
     constraint l_podr_fk 
       foreign key l_podr_fk (l_id) 
       references podrazdel (pod_id) 
    on delete cascade 
    on update cascade 
) ENGINE=InnoDB ;

Всё равно в девелопере связь не показывается

saidmir
() автор топика
Ответ на: комментарий от saidmir

у нас 7 + 2 пробела

приучайся сразу делать так как надо а стандарт 10 знаков. нормально именуй поля, без транслита, с внятными именами а не phone[1-3] и с форматом object_id для вторичных ключей. если у тебя еще и датавремя без таймзоны то это тогда эталонное нинужно.

exception13 ★★★★★
()

Ошибка в том, что реализуется связь один к одному, а не один ко многим. Нужно как то так ..

create table podrazdel 
(
    pod_id int(30)     not null auto_increment,
    pod_name char(300) not null,
    primary key (pod_id)
);

create table list 
(
  l_id   int(30) not null auto_increment,
  
  pod_id int(30) not null,
  
  l_fio varchar(500),
  l_podr char(200) not null,
  l_doljn varchar(300) not null,
  l_phone1 char(9) not null,
  l_phone2 char(9),
  l_phone3 char(9),

  primary key (l_id),
  foreign key (pod_id) references podrazdel (pod_id) on delete cascade on update cascade
);
looper
()
Ответ на: комментарий от looper

Огромное спасибо

в мануалах так же описывается и пишу я так же, но девелопер всё равно связи не показывает.

Если можно подскажите хороший девелопер для mySQL под Debian 6

saidmir
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.