|
|
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Возникли сомнения в правильности построения архитектуры бд... Есть две таблицы, ссылающиеся на одну (Addresses). У последней созданы два FK на первые таблицы с cascade delete. Подскажите, правильно ли такое решение? И если нет. то как лучше реализовать? Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 13:28 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
simlexВозникли сомнения в правильности построения архитектуры бд. Заполни эти три таблицы реальными данными, потом удали что нибудь, посмотри что получилось и определись в своих сомнениях - кроме тебя, больше это никому не нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 14:52 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
simlexЕсть две таблицы, ссылающиеся на одну (Addresses). У последней созданы два FK на первые В этом месте меня начинает грызть смутное сомнение... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 17:58 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
Опишу более подробно: Есть две таблицы: Center1 и Center2. К каждой из них привязан свой адрес (таблица Adresses с FK with casade delete на Center1.Center_Id и Center2.Center_Id). Все удаляется как положено. Но интересует вопрос правильности такого подхода. Возможно, стоит определить отдельную таблицу Centers с PK Center_Id и привязать адрес к ней, а уже от Centers по FK with cascade delete связывать Center1 и Center2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 19:15 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
Возможно так же определить отдельные Adress таблицы для Center1 и Center2 по один-к-одному, но это будет расточительно... Adresses буду в дальнейшем расширять, и возможно, такой подход подойдет. Но как быть,, например для неменяющихся типо в, которые нужно связать для разных объектов по FK? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 19:20 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
simlexЕсть две таблицы: Center1 и Center2. Чем они отличаются? on delete cascade - само по себе must die. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 19:22 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
отличаются всем, кроме наличия адреса... а в чем недостаток cascade delete? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 19:25 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
simlexа в чем недостаток cascade delete? В том, что он позволяет удалить из БД неожиданно много информации. БД создаются для хранения информации, на её удаление требуется весьма веское основание. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 20:16 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsimlexа в чем недостаток cascade delete? В том, что он позволяет удалить из БД неожиданно много информации. БД создаются для хранения информации, на её удаление требуется весьма веское основание. С другой стороны, если не удалить неожиданно много информации каскадно, то вполне ожиданно в бд станет много никому не нужного мусора.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 21:33 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
Возможно так же определить отдельные Adress таблицы для Center1 и Center2 по один-к-одному, но это будет расточительно... Adresses буду в дальнейшем расширять, и возможно, такой подход подойдет. Но как быть,, например для неменяющихся типо в, которые нужно связать для разных объектов по FK? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 21:37 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
softwarerВ этом месте меня начинает грызть смутное сомнение... :) Вы действительно говорите сумбурно и не связанно, трудно понять что вам нужно вообще... Просто какой то набор слов по тематике.... simlexВозможно так же определить отдельные Adress таблицы для Center1 и Center2 по один-к-одному, но это будет расточительно... Adresses буду в дальнейшем расширять, и возможно, такой подход подойдет. Но как быть,, например для неменяющихся типо в, которые нужно связать для разных объектов по FK? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 22:09 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 22:18 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
simlex, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 22:22 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
О, слова у него кончились, наскальная живопись пошла... Обломись, нету тебе в жизни счастья. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 22:33 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
simlex, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 22:34 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
vmag, спасибо, но мне нужно чтобы при удалении либо Center1 либо Center2 удалялся связанный с ним Address. А по представленному рисунку ключи у меня не создаются. При добавлении внешнего ключа к Address (связь с Center1): "Столбцы в таблице Center1 не совпадают с существующим первичным ключом или ограничением UNIQUE" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 23:10 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
simlexvmag, спасибо, но мне нужно чтобы при удалении либо Center1 либо Center2 удалялся связанный с ним Address Алгоритм удаления записи из Center1: 1. Найти удаляемую запись в Center1. 2. Проверить наличие в Center2 записей с id_adres как в удаляемой из Center1. 3. Если записи в Center2 есть, то удаляем только запись из Center1, если нет, то удаляем и запись Center1 и запись Adress по id_adres. Алгоритм удаления записи из Center2 аналогично по смыслу... Можно вообще не парится, а периодически запускать процедуру, которая будет удалять все адреса, не имеющие подчиненных записей ни в Center1 ни в Center2 simlexА по представленному рисунку ключи у меня не создаются. При добавлении внешнего ключа к Address (связь с Center1): "Столбцы в таблице Center1 не совпадают с существующим первичным ключом или ограничением UNIQUE" Это нужно делать на пустой БД и иметь ввиду, что в моей схеме всё наоборот с ключами - первичный в Adress а вторичные в Center1 и Center2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 23:31 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
vmag, спасибо. вопрос закрыт. если интересно, отпишусь, подготовив разширеный обзор проблемы и решения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 23:33 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
simlexесли интересно, отпишусь, подготовив разширеный обзор проблемы и решения Не интересно. Поскольку правильным решением является выкидывание таблицы address к ЧМ и внесения адресов прямо в таблицы centrum1/2. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 23:54 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
Что за предметная область такая, что по одному адресу может множество каких-то центров быть. Как пр мне, одной, максимум двух таблиц на это дело хватит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2014, 23:55 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
Pallaris,на один центр - один адрес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 00:33 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, зачем в таблицах дополнительные ненужные поля, если можно обойтись теми же двумя (Center1_Id и Center2_Id (при нашем примере)) в Address? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 00:36 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
simlexPallaris,на один центр - один адрес. Вам бы озвучить просто изначальную проблему без своих идей по её реализации, а то вы так только всех путаете... Зачем две одинаковые таблицы Center ???? Пусть тогда будет одна таблица Center с текстовым полем адрес и всё... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 01:00 |
|
||
|
Правильная реализация cascade delete
|
|||
|---|---|---|---|
|
#18+
vmag, таблицы Center1 и Center2 simlexотличаются всем, кроме наличия адреса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 01:05 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38716515&tid=1540825]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
24ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 146ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...