Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Правильно-ли представлена связь между таблицами?   Найти похожие ветки 

 
Barmaglot   (2005-09-28 09:19) [0]

Всем привет! Не очень давно работаю с IB, возник вопрос по связности таблиц (один-ко-многим):
Смысл такой: Есть таблица agent (контрагенты). У контрагента может быть несколько счетов, которые я описываю в отдельной таблице, и много договоров (тоже их вынес в отдельную таблицу):

CREATE TABLE "AGENT"
(
 "KOD_AGENT" INTEGER NOT NULL,
 "VID_AGENT" VARCHAR(20),
 "AGENT" VARCHAR(150),
 "ADRESS_YRID" VARCHAR(200),
  ...

 "KOD_DOG" INTEGER NOT NULL,
 "KOD_SCHET" INTEGER NOT NULL,
 "NAIMEN" VARCHAR(200) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
 "NUM_SCHET" VARCHAR(20) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
PRIMARY KEY ("KOD_AGENT")
);
ALTER TABLE "AGENT" ADD FOREIGN KEY ("KOD_DOG") REFERENCES DOGOVOR ("KOD_DOG");
ALTER TABLE "AGENT" ADD FOREIGN KEY ("KOD_SCHET") REFERENCES SCHET ("KOD_SCHET");

CREATE TABLE "DOGOVOR"
(
 "KOD_DOG" INTEGER NOT NULL,
 "AGENT" VARCHAR(150) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
 "NAIMEN" VARCHAR(200) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
 "DATA_NACH" TIMESTAMP,
 "DATA_END" TIMESTAMP,
PRIMARY KEY ("KOD_DOG")
);

CREATE TABLE "SCHET"
(
 "KOD_SCHET" INTEGER NOT NULL,
 "AGENT" VARCHAR(150) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
 "WORK_NAME" VARCHAR(50) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
 "NUM_SCHET" VARCHAR(20) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
  ...

 "RECV" VARCHAR(300) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
PRIMARY KEY ("KOD_SCHET")

В табл. "AGENT" связал таблицы по ключам KOD_DOG и KOD_SCHET, но не совсем понятно, в таблицах договоров и счетов нужно-ли поле "AGENT" - название агента, для обеспечения ссылочной целостности?

Прошу проверить правильность связности таблиц.....
Спасибо.


 
Sergey13 ©   (2005-09-28 09:24) [1]

>Прошу проверить правильность связности таблиц.....
Неправильно. Все с точностью до наоборот. Счета и Договоры должны ссылаться на Агентов мирового империализму. 8-)


 
Barmaglot   (2005-09-28 09:31) [2]

То есть:

CREATE TABLE "DOGOVOR"
(
"KOD_DOG" INTEGER NOT NULL,
"KOD_AGENT" INTEGER NOT NULL,
"NAIMEN" VARCHAR(200) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
"DATA_NACH" TIMESTAMP,
"DATA_END" TIMESTAMP,
PRIMARY KEY ("KOD_DOG")
);
ALTER TABLE "DOGOVOR" ADD FOREIGN KEY ("KOD_AGENT") REFERENCES AGENT ("KOD_AGENT");

CREATE TABLE "SCHET"
(
"KOD_SCHET" INTEGER NOT NULL,
"KOD_AGENT" INTEGER NOT NULL,
"WORK_NAME" VARCHAR(50) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
"NUM_SCHET" VARCHAR(20) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
 ...

"RECV" VARCHAR(300) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
PRIMARY KEY ("KOD_SCHET");
ALTER TABLE "SCHET" ADD FOREIGN KEY ("KOD_AGENT") REFERENCES AGENT ("KOD_KOD_AGENT");

а в таблице "AGENT" определять foreign key не надо?


 
Sergey13 ©   (2005-09-28 09:41) [3]

Теперь правильно. Все, кроме сервера. Викинь его нафиг и поставь ФБ1.5. И будет тебе счастье. 8-)


 
Top ©   (2005-09-28 09:50) [4]

ты бы попробовал проверил как работает а потом с проблемами сюды, если возникнут


 
Barmaglot   (2005-09-28 09:51) [5]

Дык в том то и дело, что попробовал и не работало.....


 
Desdechado ©   (2005-09-28 11:07) [6]

рекомендую делать именованные констраинты, тогда при необходимости изменить структуру данных это легко будет сделать
ALTER TABLE tablica ADD CONSTRAINT constr_name FOREIGN KEY ...
аналогично для уников и первичных ключей



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.043 c
14-1129064523
Trajor
2005-10-12 01:02
2005.11.06
Подсветка синтаксиса


1-1129546319
integery
2005-10-17 14:51
2005.11.06
как узнать чем запущен ActiveX cscript.exe или wscript.exe


14-1129193739
Kolan
2005-10-13 12:55
2005.11.06
Объясните разницу между SDK и Драйвером.


2-1129280012
Perf2k2
2005-10-14 12:53
2005.11.06
Подскажите новичку (насчет ТриВью и процедур)


14-1129283945
Fin
2005-10-14 13:59
2005.11.06
Квоты на ПАПКИ под NTFS?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский