Главная страница
    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.03 c
4-1126018292
Artemiy
2005-09-06 18:51
2005.11.06
Глубина цвета


8-1118919925
PiOnEr
2005-06-16 15:05
2005.11.06
Траблы с JPEG... Хелп!


14-1129225171
spotter
2005-10-13 21:39
2005.11.06
Простенькая задачка на прологе.


3-1127899468
Аноним
2005-09-28 13:24
2005.11.06
Структура БД


14-1129612619
Ega23
2005-10-18 09:16
2005.11.06
С днем рождения! 18 октября





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский