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

Вниз

Связь один ко многим   Найти похожие ветки 

 
ST_   (2003-11-07 01:51) [0]

Многоуважаемый ALL, вот тебе ещё один вопрос. Необходимо связать две таблицы связью один ко многим в Pararox 7. Мои действия:
1) В первой (главной) таблице создаю поле Ind1 типа AutoIncrement.
2) В подчинённой тиблице создаю поле Ind2 типа Long Integer.
3) В подчинённой таблице создаю secondary index Ind1 -- Ind2
4) Выставляю всё в delphi.
Теперь при редактировании подчиненной таблици, когда я создаю вторую запись мне вылетает мат "Index Violation", и вылетает, пока я не удалю одну из зиписей. Как это порешать?


 
ST_   (2003-11-07 02:04) [1]

Прошу прощения, не Index Violation, а Key Violation!


 
MsGuns   (2003-11-07 13:25) [2]

Чтобы бала возможна связь "Один-ко-многим", надо, чтобы в подчиненной таблице было хотя бы на одно поле-ключ (или ун.индекс) больше, чем в основноу (мастер) таблице. Т.е. в твоем примере, у детальной таблицы должно быть как min 2 поля:
1. ind1 (или с любым другим именем) - для связки с мастером
2. ind2 - собств.уник.поле (Primary или Secondary index)


 
MsGuns   (2003-11-07 13:38) [3]

Блин, коряво получилось ;( Попробую на примере:

БД лицевых счетов плательщиков каб. TV
-----------------------------------------

Таблица плательщиков (Master):
1. ID int (autoinc) идент-р плательщика Primary Key
2. FAM Varchar Фамилия
3. NAM Varchar Имя
4. NAM2 Varchar Отчество
5.. Адрес + доп. информация

Таблица проплат (Detail)
1. ID int (autoinc) идент-р платежа Primary Key
2. IDP int (связка с Master) PK или Un.Index
3. PDAT Date дата платежа
4. PSUM Currency Сумма платежа
5.. данные о РС, МФО и др.


 
Виталий Панасенко   (2003-11-07 17:09) [4]

Во-первых, в подчиненной таблице должно быть как минимум два поля в Primary Index - Ind2 и еще одно типа AutoIncrement для обеспечения уникальности индекса (по двум полям - а так у вас дублируется значение Ind2 из главной таблицы, что противоречит понятию Primary Key).. Во-вторых, в обработчике подчиненной таблицы OnNewRecord Ind2 подчиненной таблицы присваивать значение Ind1 главной - и все будет (должно) работать...



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

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

Наверх




Память: 0.45 MB
Время: 0.009 c
3-89687
GIL
2003-11-06 12:01
2003.11.27
неправильная дата


3-89792
redfox
2003-11-06 16:20
2003.11.27
TExcelWorkSheet


1-89994
Vogus
2003-11-14 18:26
2003.11.27
Как запретить перетаскивание колонок в гриде


14-90106
REA
2003-11-04 10:43
2003.11.27
Интернет и люди


3-89754
Liavik
2003-11-08 00:30
2003.11.27
Отчет





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