Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> несоединяются таблицы 
:(
    Опции темы
Psixa
Дата 11.2.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



Всем привет. Ребят помогите плиз молодой программистке smile в общем небуду ходить вокруг да около smile 
Цитата

create table faculty (
      fac_num integer not null,
      fac_name varchar (150),
      primary key (fac_num)
)

create table speciality (
      spec_num integer not null,
      spec_name varchar (150),
      fac_num integer not null,
      primary key (spec_num, fac_num),
      foreign key (fac_num) references faculty (fac_num)
)

тут всё круто smile 
Цитата

create table students (
      testb_num integer not null,
      fio_stud varchar (60),
      group_num integer not null,
      stepuxa integer,
      spec_num integer not null,
      primary key (testb_num, spec_num),
      foreign key (spec_num) references speciality (spec_num)
)

а тут IB Console начинает ругаться :( вот собственно говоря те маты которые он мне пишет smile :( 
Цитата

error at line 1 - unsuccessful metadata update could not find UNIQUE INDEX with specified columns

помогите плизз разобраться, а то срочно нуно сделать :(
PM MAIL   Вверх
Zloxa
Дата 11.2.2010, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Psixa @  11.2.2010,  17:54 Найти цитируемый пост)
not find UNIQUE INDEX with specified columns

для того чтобы успешно накинуть fk необходимо обеспечить уникальность speciality.spec_num



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
skyboy
Дата 11.2.2010, 18:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



у тебя в таблице speciality составной главный ключ из testb_num и spec_num.
это значит, что в таблице speciality могут быть дубликаты значения spec_num:
testb_num spec_num
1                    2
2                    2
5                    2
запись из таблицы students должна "зависеть" от одной записи в таблице speciality
положим, есть запись в students со значением поля spec_num = 2. c какой записью из таблицы speciality она должна быть связана? с какой из трех? случайно выбранной? вот чтоб не было таких неоднозначностей, поля, на которые ссылается внешний ключ(в данном случае поле speciality.spec_num), должны входить в первичный/уникальный ключ. Не как часть составного ключа, а индивидуально.
в твоем случае надо добавить индекс в speciality для spec_num. если это невозможно по причине дубликатов данных, значит, что-то не то со структурой
PM MAIL   Вверх
Psixa
Дата 11.2.2010, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



т.е speciality.spec_num сделать UNIQUE? 
PM MAIL   Вверх
Zloxa
Дата 11.2.2010, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Psixa @  11.2.2010,  18:14 Найти цитируемый пост)
т.е speciality.spec_num сделать UNIQUE?  

Либо
Код

create table students (
      testb_num integer not null,
      fio_stud varchar (60),
      group_num integer not null,
      stepuxa integer,
      spec_num integer not null,
      fac_tym interer not null,
      primary key (testb_num, spec_num),
      foreign key (spec_num, fac_num) references speciality (spec_num, fac_num)
)



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Psixa
Дата 11.2.2010, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



Цитата(Zloxa @ 11.2.2010,  18:18)
Цитата(Psixa @  11.2.2010,  18:14 Найти цитируемый пост)
т.е speciality.spec_num сделать UNIQUE?  

Либо
Код

create table students (
      testb_num integer not null,
      fio_stud varchar (60),
      group_num integer not null,
      stepuxa integer,
      spec_num integer not null,
      fac_num interer not null,
      primary key (testb_num, spec_num),
      foreign key (spec_num, fac_num) references speciality (spec_num, fac_num)
)

всё поняла smile если какие-то траблы будут обращусь smile спасибо за помощь smile 

Это сообщение отредактировал(а) Psixa - 11.2.2010, 18:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0790 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.