|
|
|
Настройка ссылочной целостности (RI actions) в ErWIN
|
|||
|---|---|---|---|
|
#18+
Перерыл весь рунет, но однозначного понимания и описания принципов настройки ссылочной целостности в erwin так и не нашел (см.аттач). И есть предположение что нет в рунете всеобъемлющего описания правил ссылочной целостности. То, что ниже написано, конечно, на всеобъемлемость не претендует. Просто хочется разобраться. Данное описание базируется на найденной в интернете информации, в том числе на англоязычных источниках. Специалистов по настройке ссылочной целостности в Erwin, прошу дать свои комментарии в части корректности трактования соответствующих пунктов настройки меню в erwin и по возможности сразу дать корректировки в тексте. 1.Child DELETE RESTRICT – удаление кортежа из дочерней таблицы возможно только в том случае если в родительской таблице отсутствуют связанные кортежи. CASCADE – при удалении кортежа из дочерней таблицы в родительской таблице также удаляется соответствующий кортеж. SET NULL – при удалении кортежа из дочерней таблицы первичный ключ в родительской таблице делается null (противоречит теории). SET DEFAULT – при удалении кортежа из дочерней таблицы значение первичного ключа в родительской таблице устанавливается как значение по умолчанию. NO ACTIONS – при удалении кортежа из дочерней таблицы никаких действий по отношению к родительской таблице не предпринимается. NONE – никаких действий по поддержанию ссылочной целостности не требуется. INSERT RESTRICT – вставке нового кортежа в дочернюю таблицу возможна только в том случае если в родительской таблице существует кортеж с соответствующим первичным ключом. CASCADE – при вставке кортежа в дочернюю таблицу в родительской таблице появляется кортеж с соответствующим первичным ключом. SET NULL – при вставке кортежа в дочернюю таблицу в родительской таблице появляется кортеж со значением первичного ключа null (этого не может быть по теории!). SET DEFAULT - при вставке кортежа в дочернюю таблицу в родительской таблице появляется кортеж со значением первичного ключа по умолчанию. NO ACTIONS – при вставке кортежа в дочернюю таблицу никаких действий по отношению к родительской таблице не предпринимается. NONE – никаких действий по поддержанию ссылочной целостности не требуется. Update RESTRICT – обновление внешнего ключа в дочерней таблице возможно только в том случае если в родительской таблице существует кортеж с соответствующим первичным ключом. CASCADE – при обновлении внешнего ключа в дочерней таблице в родительской таблице обновляется соответствующий первичный ключ. SET NULL – при обновлении внешнего ключа в дочерней таблице в родительской таблице появляется кортеж со значением первичного ключа null (этого не может быть по теории!). SET DEFAULT – при обновлении внешнего ключа в дочерней таблице в родительской таблице также обновляется соответствующее значение первичного ключа. NO ACTIONS – при обновлении внешнего ключа в дочерней таблице никаких действий по отношению к родительской таблице не предпринимается. NONE – никаких действий по поддержанию ссылочной целостности не требуется. 2. Parent delete RESTRICT – удаление кортежа из родительской таблицы возможно только в том случае если в дочерней таблице отсутствуют связанные кортежи. CASCADE – при удалении кортежа из родительской таблицы в дочерней таблице также удаляется соответствующий кортеж. SET NULL – при удалении кортежа из родительской таблицы значение внешнего ключа в дочерней таблице делается null. SET DEFAULT - при удалении кортежа из родительской таблицы значение соответствующего внешнего ключа в дочерней таблице устанавливается как значение по умолчанию. NO ACTIONS – при удалении кортежа из родительской таблицы никаких действий по отношению к дочерней таблице не предпринимается. NONE – никаких действий по поддержанию ссылочной целостности не требуется. Insert RESTRICT – вставка нового кортежа в родительскую таблицу возможна только в том случае если в дочерней таблице существует кортеж с соответствующим внешним ключом. CASCADE – при вставке кортежа в родительскую таблицу в дочерней таблице появляется кортеж с соответствующим вторичным ключом. SET NULL – при вставке кортежа в родительскую таблицу в дочерней таблице появляется кортеж со значением вторичного ключа равным null (противоречит теории!). SET DEFAULT - при вставке кортежа в родительскую таблицу в дочерней таблице появляется кортеж со значением вторичного ключа по умолчанию. NO ACTIONS – при вставке кортежа в родительскую таблицу никаких действий по отношению к дочерней таблице не предпринимается. NONE – никаких действий по поддержанию ссылочной целостности не требуется. Update RESTRICT – обновление кортежа в родительской таблице возможно только в том случае если в дочерней таблице существует кортеж с соответствующим вторичным ключом. . CASCADE – при обновлении первичного ключа в родительской таблице в дочерней таблице обновляется соответствующий вторичный ключом. SET NULL – при вставке кортежа в родительскую таблицу в дочерней таблице появляется кортеж со значением вторичного ключа null. SET DEFAULT - при обновлении кортежа в родительской таблице в дочерней таблице значение вторичного ключа устанавливается как значение по умолчанию. NO ACTIONS – при обновлении кортежа в родительской таблице никаких действий по отношению к дочерней таблице не предпринимается. NONE – никаких действий по поддержанию ссылочной целостности не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2011, 18:19 |
|
||
|
Настройка ссылочной целостности (RI actions) в ErWIN
|
|||
|---|---|---|---|
|
#18+
Формилировки каждого режима точные и полные. Что именно вам непонятно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2011, 18:25 |
|
||
|
Настройка ссылочной целостности (RI actions) в ErWIN
|
|||
|---|---|---|---|
|
#18+
я начинающий проектировщик, поэтому у меня есть сомнения в части сделанных формулировок и я хотел бы чтобы профессионалы поправили или дополнили эти формулировки в случае необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2011, 18:29 |
|
||
|
Настройка ссылочной целостности (RI actions) в ErWIN
|
|||
|---|---|---|---|
|
#18+
Их не нужно поправлять или дополнять. Они точные и не допускают двоякого толкования. Напишите в каких именно вы сомневаетесь и почему ? Конкретно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2011, 09:06 |
|
||
|
Настройка ссылочной целостности (RI actions) в ErWIN
|
|||
|---|---|---|---|
|
#18+
Не совсем понятна разница между NO ACTIONS и NONE автор1.Child UPDATE NO ACTIONS – при обновлении внешнего ключа в дочерней таблице никаких действий по отношению к родительской таблице не предпринимается. NONE – никаких действий по поддержанию ссылочной целостности не требуется. NO ACTIONS в данном случае - это вообще сознательное нарушение ссылочной целостности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2011, 11:08 |
|
||
|
Настройка ссылочной целостности (RI actions) в ErWIN
|
|||
|---|---|---|---|
|
#18+
Вы можете сгенерить код триггера для этих двух опций и выложить его сюда на форум ? Если в качестве сервера задат MS SQL, то большинство ограничений от парента к чаилду можно реализовать совместимыми опциям ссылочной целостности сервера. Delete No Action Cascade Set Null Set Default Update Cascade Set Null Set Default для остальных Erwin должен бы нагенерить триггеры. Про другие СУБД не знаю, может у них набор опций шире. Если Erwin будет вынужден при задании опций от чаилда к паренту генерить триггеры, то из их кода должны быть видны нюансы этих двух опций - NO ACTIONS, NONE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2011, 11:49 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=57&tid=1542012]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 386ms |

| 0 / 0 |
