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

Вниз

Referential Integrity   Найти похожие ветки 

 
SiJack   (2002-11-29 09:33) [0]

В документации написано что используя Referential Integrity можно создать две таблицы причем если удалить запись в главной то в подчененой автоматически удалятся записи связанные с этой записью. Но на проктике чегото не выходит может есть какой то секрет? Очень хочется узнать его!! Заранее спасибо!
(свойство Cascade устанавливал)


 
Карелин Артем   (2002-11-29 11:50) [1]

Другой классик не рекомендует устанавливать Referential Integrity на уровне базы, а рекомендует делать это на уровне приложения.


 
MsGuns   (2002-11-29 12:07) [2]

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


 
ЮЮ   (2002-11-29 12:20) [3]

>Полагаться на DBD в плане лог.связей между таблицами не советую никому.

А может это инструмент непосредственно DBD? Никто не пробовал? Сам то он поддерживает своё каскадное удаление? Если да, то остаётся дать пользователю DBD в качестве инструмента и не париться с разработкой своей программы :-)


 
ScareCrow   (2002-11-29 13:18) [4]

В свое время, в одной книге по DELPHI прочитал, что каскадное удаление поддерживается только в среде PARADOX, так что не ломайте себе голову: используя в качестве инструмента программирования DELPHI, каскадное удаление осуществляйте на уровне приложения. Если у Вас, например, отношение между двумя таблицами OneToMany ( Master.db->OneToMany-> Detail.db), то прежде чем удалить запись в Master.db удалите соответсвующие записи в Detail.db. Логично использовать для этой операции компонент класса TUpdateSQL :

Master.db
Master_id + *
Master_Info A 10

Detail.db
Detail_id + *
Master_id I < Define RefIntegrity:
reference on Master.Master_id >
Detail_Info A 15


Delete
From
"Detail.db"
Where
Master_id=:Master_ID

Либо используйте TBatchMove.

Само по себе использование RefIntegrity очень даже хорошая вещь, в смысле защиты от непреднамеренного удаления и, собственно, целостности данных.
Если вы используете каскадное обновление, то в Master.db
Primary Key Field не рекомендуется делать типа AutoInc(+)...


 
REP   (2002-11-29 13:58) [5]

ScareCrow (29.11.02 13:18)
>Если вы используете каскадное обновление, то в Master.db
>Primary Key Field не рекомендуется делать типа AutoInc(+)...

Почему?


 
ScareCrow   (2002-11-29 14:44) [6]

Потому, что иногда, надо менять (редактировать) значение ключа в Master.db : если его тип AutoInc(+), то Вы не сможете этого сделать. Нпример было 44, а вы хотите его поменять на 48 (Master.Master_id=48 нет в таблице Master.db "в природе" на тек. момент). А если тип Master.Master_id, например I, то пож.:
делаете Master.Master_id:=48 и в Detail Detail.Master_id=48
становится "автоматом" (по крайней мере, в DBD).



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

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

Наверх




Память: 0.45 MB
Время: 0.008 c
4-61861
kostik78ua
2002-11-06 12:17
2002.12.19
GetWindowModuleFileName+Win95


1-61562
Виталик
2002-12-09 18:49
2002.12.19
MessageBox по центру моего окна (или в произвольном месте экрана)


1-61587
phantom2040
2002-12-10 08:59
2002.12.19
Работа со временем


1-61542
Beginner
2002-12-09 14:59
2002.12.19
Модули , процедуры ...


4-61866
Nick-From
2002-11-05 21:23
2002.12.19
Integer & Dword +WINAPI





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