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

Вниз

Справочная целесность.   Найти похожие ветки 

 
Ihtiandr   (2003-03-21 09:51) [0]

Мажна ли как-то организовать справочную целесность в Paradox между 3-я таблицами. Одна таблица является мастером для другой.
Другая является дочерней для первой и мастером для третей.
Третяя - дочерняя для второй.


 
Johnmen   (2003-03-21 09:53) [1]

Совсем озверел Чёрный Абдулла !


 
Dmitry Filippov   (2003-03-21 10:05) [2]

"Справочная целесность" - это что новый термин?


 
Ihtiandr   (2003-03-21 10:17) [3]

Свойство таблици такое слышали - "referential integrity"


 
Соловьев   (2003-03-21 10:18) [4]

субд?


 
Dmitry Filippov   (2003-03-21 10:24) [5]

Твой электронный переводчик врет.
Это ссылочная целостность.


 
Dmitry Filippov   (2003-03-21 10:41) [6]

"referenced integrity"


 
Ihtiandr   (2003-03-21 10:43) [7]

fibPlus


 
Соловьев   (2003-03-21 10:44) [8]

это не СУБД а компоненты доступа к ... Через RK и FK...


 
Ihtiandr   (2003-03-21 11:11) [9]

InterBase


 
zacho   (2003-03-21 11:14) [10]

Читай Data Definition Guide: Working with tables -> Creating Tables -> Defining integrity constrains -> Enforcing referential integrity with the FOREIGN KEY


 
Соловьев   (2003-03-21 11:18) [11]

/* Primary keys definition */

ALTER TABLE <table> ADD CONSTRAINT <pk_name> PRIMARY KEY (<field>);


/* Foreign keys definition */

ALTER TABLE <table> ADD CONSTRAINT <FK_name> FOREIGN KEY (<key>) REFERENCES <parent table> (<field>) ON DELETE SET NULL ON UPDATE CASCADE;



 
Жук   (2003-03-21 11:30) [12]

Зачем нужны вам енти проблемы с FK ?! Всё можно организовать через интерфейс али триггеры...


 
zacho   (2003-03-21 11:34) [13]


> Жук © (21.03.03 11:30)

А книжки умные почитать, или головой подумать ? Вот посыпится у тебя база, поймешь зачем нужны FK.


 
Жук   (2003-03-21 11:41) [14]

2 zacho ©

Типун вам на язык. :-) И что такое :
> посыпится у тебя база
?


 
zacho   (2003-03-21 11:50) [15]


> Жук © (21.03.03 11:41)

Нарушится та самая ссылочная целостность :-) Что наиболее вероятно при "организацию через интерфейс". На триггерах действительно можно нормально организовать RI, тем более, что реально при создании FK создаются "системные" триггера. Но зачем тебе этот гемморой ? Создать индекс(иначе тормоза обеспечены) , триггер(даже несколько на каждую таблицу), причем чем для большего количества таблиц, тем больше вероятность ошибки. Гораздо проше создать FK


 
Жук   (2003-03-21 13:22) [16]

Вам не кажется, что сохранение ссылочной целостности with help FK - нонсенс ? Я уж не говорю о reference is null, который эту самую целостность и нарушает.
Живой пример : понадобилось убрать из справочника строку, а там restrict и шо робить ?
Не хочу показаться параноиком, но все эти "10-е правила Кодда" попахивают Б.Гейтсом и иже с ним.
Сорри за оффтопик.


 
Соловьев   (2003-03-21 13:28) [17]


> Живой пример : понадобилось убрать из справочника строку,
> а там restrict и шо робить ?

убрать из дочерной записи или присвоить им NULL. А что ты будешь делать когда у тебя будут записи из дочерней ссылаться на не сушествующие данные из родительской?
Кодд был умным мужиком. Это точно. Он был математиком. А потом программистом. Сначала надо выучить реляционную алгебру чтобы на него пинать...


 
Johnmen   (2003-03-21 13:29) [18]

>Жук © (21.03.03 13:22)

Нет, ты неправ...:) zacho © все верно сказал...
Ты путаешь PK c FK :)


 
Жук   (2003-03-21 13:41) [19]

Не могу найти не одного плюса в использовании FK. :-( Ссылки на преславутую целостность не выдерживают критики, а в литературе только такие объяснения. Может от меня что-нить скрывают ? :-)


 
Johnmen   (2003-03-21 13:52) [20]

>Жук © (21.03.03 13:41)

А где конкретная критика то ???
И механизм поддержания ссылочной целостности придумали люди уж наверное не глупее нас с тобой :)


 
Жук   (2003-03-21 14:00) [21]

Если придерживаться 10-го правила Кодда, то сохранение целостности можно реализовать 2-мя путями 1) FK
2) Триггеры. Первый путь - наиболее прямолинейный и простой, но не гибкий. Второй - более гибкий, но чреват ошибками. Я не понимаю почему вы советуете для трёх таблиц использовать FK, есть же более изящные методы.


 
zacho   (2003-03-21 14:08) [22]


> Жук © (21.03.03 14:00)

FK и триггеры - практически одно и тоже. А никакая гибкость там и не нужна. Ну приведи хоть один практический пример "негибкости" FK


 
Johnmen   (2003-03-21 14:08) [23]

>...есть же более изящные методы.

Например ? И в чем изящество ?


 
Жук   (2003-03-21 14:19) [24]


> zacho © (21.03.03 14:08)
>
> FK и триггеры - практически одно и тоже.
Согласен. Но системные триггеры ворошить как-то неуютно, тогда как свой - легко.
> приведи хоть один практический пример "негибкости" FK
Негибкость - "restrict, cascade, set null", когда надо зачем-то удалить запись справочника.


> Johnmen © (21.03.03 14:08)
>
> Например ? И в чем изящество ?
Пишем триггер, который при удалении записи из справочника всем ссылкам на эту строчку присваивает номер телефона любимой девушки. Изящно ? :-)


 
Соловьев   (2003-03-21 14:22) [25]

а зачем тебе
... ON DELETE SET NULL ON UPDATE CASCADE;


 
Johnmen   (2003-03-21 14:23) [26]

>Жук © (21.03.03 14:19)

Как приведенный пример коррелирует с поддержанием ссылочной целостности ? :)


 
Соловьев   (2003-03-21 14:28) [27]

А где вообще автор вопроса??? Ему уже ясно?


 
Жук   (2003-03-21 14:35) [28]

Что такое ссылочная целостность ???


 
zacho   (2003-03-21 14:36) [29]


> Жук © (21.03.03 14:19)

Для этого есть CASCADE, SET NULL, SET DEFAULT
А без FK вообще нет гарантии что там какой-нибудь мусор не окажется.
Так что либо FK с DRI, либо FK+триггера, но FK все равно нужен


 
zacho   (2003-03-21 14:39) [30]


> Жук © (21.03.03 14:35)
> Что такое ссылочная целостность ???

Пойдет выдержка из Data Definition Guide ? :-)

The primary reason for defining foreign keys is to ensure that data integrity is maintained
when more than one table uses the same data: rows in the referencing table must always
have corresponding rows in the referenced table.


 
Johnmen   (2003-03-21 14:39) [31]

>Жук ©

Все понятно. Ты путаешь ссылочную целостность с каскадным воздействием. Это разные вещи...:)


 
Жук   (2003-03-21 14:52) [32]

Я рад, что всем всё понятно. Правда мне не понятно зачем нужны FK, но это уже не важно. Цитата : "Ссылочная целостность - целостность отношений предок/потомок, создаваемых внешими и первичными ключами". Вывод : если у меня в базе нет внешних ключей, то ссылочная целостность там не может быть нарушена, в виду отсутствия ея, как таковой. Туше !!! :-)


 
zacho   (2003-03-21 14:55) [33]


> Жук © (21.03.03 14:52)

Перечитай еще раз приведенную мной выдержку. Ты ее понял как-то совсем наооборот. А там как раз написано, зачем нужны FK


 
Жук   (2003-03-21 15:10) [34]

Мне не нравиться, что при внесении мной изменений в БД происходят автоматические действия, инсперированные FK, или же мне сообщается, что ты не можешь это делать, ибо : "Так говорит Заратуштра".


 
Johnmen   (2003-03-21 15:30) [35]

А кто инсперировал FK ? Не ты ? Ты ! Значит несёшь ответственность !
Вобщем, хватит флеймить :) Пора прочитать нормальную книгу про идеологию построения баз данных.


 
Delirium^.Tremens   (2003-03-21 17:24) [36]

Справосьная целисьнось?

Аха-ха-ха, Ихи-хи-хи, все пошел смеяться.
Китайский птися фениксь.
:-)))))


 
kaif   (2003-03-21 18:53) [37]

2 Жук © (21.03.03 13:41)
>Не могу найти не одного плюса в использовании FK. :-( Ссылки на >преславутую целостность не выдерживают критики, а в литературе >только такие объяснения. Может от меня что-нить скрывают ? :-)

У меня конфигурируемая бухгалтерская система, в которой конфигурирующий создает таблицы (например, новые справочники или документы). Так вот в ней все FK создаются у меня автоматически. На сегодняшний день в конфигурации под текущий заказ накопилось более 100 таблиц и немыслимое число FK. Никаких проблем с FK я не наблюдал - одни плюсы. Невозможно удалить товар, если он используется в документах. Невозможно удалить документ, на который ссылается другой документ. Это нормально. Юзеров это не пугает, наоборот, радует. FK Detail таблиц документов имеют CASCADE DELETE, что упрощает удаление документов.

И наконец, я точно знаю, что никто не сможет удалить, например, заказ, по которому выставлен инвойс и поэтому меня совершенно не беспокоит, что при объединении таблицы заказа с таблицей инвойсов в отчете о выполнении заказов у меня выпадут какие-то данные только потому, что кто-то удалил сдуру заказ. Я уже не говорю о том, что у меня автоматически создаются таким способом все необходимые индексы для ускорения всех основных запросов, оприрающихся, естественно, на такие связи. И поэтому я никогда не сталкиваюсь проблемой создавать руками особенные индексы для ускорения запроса.

Другой плюс - reverse engineering в любое CASE-средство, например, в Embarcadero. Я легко получаю модель всей базы со всеми связями, так как Embarcadero вылавливает эти связи, заглядывая в описания FK. В результате я получаю распечатку ERX диаграммы всей базы, потратив на это дело всего 5 минут. Руками этого просто не сделать. А документация тоже иногда хорошая вещь...

Скажу больше. Без FK у меня в базе давно бы наступил невообразимый хаос.

А если кому-то удается без FK обходиться, значит ему просто не приходилось иметь дела с сотнями таблиц и сложной бизнес-логикой.

Что же касается subj, то вопрос был про Paradox. В Paradox-е FK индексы существуют. Их можно создать прямо в Database Desktop. Я в свое время так и делал, пока не обнвружил, что в Paradox-е индексы имеют свойство рушиться.

Глюки с FK в IB6.0 имеются. В Firebird и Yaffils они исправлены. Основной глюк - невозможность создать FK на поле, которое входит, в свою очередь, в FK на третью таблицу. Но, повторяю, этот глюк устранен в Firebird и Yaffils.



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

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

Наверх




Память: 0.54 MB
Время: 0.041 c
4-30661
Radimir
2003-02-10 11:46
2003.04.10
перезагрузка компьютера


6-30504
stur
2003-02-17 16:32
2003.04.10
ClientSocket , режим NonBlocking. Где обработать исключение?


3-30303
Sirus
2003-03-23 10:43
2003.04.10
IBase 5.5 и IBase 6 на одной машине... Можно или нет???


1-30441
MachmuD
2003-03-31 10:00
2003.04.10
Нужна справка...Как пользоваться функцией Polylineto


1-30348
Che
2003-03-31 19:54
2003.04.10
Выбор фаила





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