Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильная реализация cascade delete / 25 сообщений из 41, страница 1 из 2
09.08.2014, 13:28
    #38716515
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
Здравствуйте! Возникли сомнения в правильности построения архитектуры бд...
Есть две таблицы, ссылающиеся на одну (Addresses). У последней созданы два FK на первые таблицы с cascade delete.
Подскажите, правильно ли такое решение? И если нет. то как лучше реализовать?

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
09.08.2014, 14:52
    #38716543
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
simlexВозникли сомнения в правильности построения архитектуры бд.

Заполни эти три таблицы реальными данными, потом удали что нибудь, посмотри что получилось и определись в своих сомнениях - кроме тебя, больше это никому не нужно...
...
Рейтинг: 0 / 0
09.08.2014, 17:58
    #38716572
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
simlexЕсть две таблицы, ссылающиеся на одну (Addresses). У последней созданы два FK на первые
В этом месте меня начинает грызть смутное сомнение... :)
...
Рейтинг: 0 / 0
09.08.2014, 19:15
    #38716589
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
Опишу более подробно:
Есть две таблицы: Center1 и Center2.
К каждой из них привязан свой адрес (таблица Adresses с FK with casade delete на Center1.Center_Id и Center2.Center_Id).
Все удаляется как положено. Но интересует вопрос правильности такого подхода.
Возможно, стоит определить отдельную таблицу Centers с PK Center_Id и привязать адрес к ней, а уже от Centers по FK with cascade delete связывать Center1 и Center2?
...
Рейтинг: 0 / 0
09.08.2014, 19:20
    #38716591
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
Возможно так же определить отдельные Adress таблицы для Center1 и Center2 по один-к-одному, но это будет расточительно... Adresses буду в дальнейшем расширять, и возможно, такой подход подойдет. Но как быть,, например для неменяющихся типо
в, которые нужно связать для разных объектов по FK?
...
Рейтинг: 0 / 0
09.08.2014, 19:22
    #38716592
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
simlexЕсть две таблицы: Center1 и Center2.
Чем они отличаются?

on delete cascade - само по себе must die.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.08.2014, 19:25
    #38716594
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
отличаются всем, кроме наличия адреса... а в чем недостаток cascade delete?
...
Рейтинг: 0 / 0
09.08.2014, 20:16
    #38716610
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
simlexа в чем недостаток cascade delete?
В том, что он позволяет удалить из БД неожиданно много информации. БД создаются для
хранения информации, на её удаление требуется весьма веское основание.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.08.2014, 21:33
    #38716627
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
Dimitry Sibiryakovsimlexа в чем недостаток cascade delete?
В том, что он позволяет удалить из БД неожиданно много информации. БД создаются для
хранения информации, на её удаление требуется весьма веское основание.

С другой стороны, если не удалить неожиданно много информации каскадно, то вполне ожиданно
в бд станет много никому не нужного мусора....
...
Рейтинг: 0 / 0
09.08.2014, 21:37
    #38716629
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
Возможно так же определить отдельные Adress таблицы для Center1 и Center2 по один-к-одному, но это будет расточительно... Adresses буду в дальнейшем расширять, и возможно, такой подход подойдет. Но как быть,, например для неменяющихся типо
в, которые нужно связать для разных объектов по FK?
...
Рейтинг: 0 / 0
09.08.2014, 22:09
    #38716648
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
softwarerВ этом месте меня начинает грызть смутное сомнение... :)

Вы действительно говорите сумбурно и не связанно, трудно понять что вам нужно вообще...
Просто какой то набор слов по тематике....

simlexВозможно так же определить отдельные Adress таблицы для Center1 и Center2 по один-к-одному, но это будет расточительно... Adresses буду в дальнейшем расширять, и возможно, такой подход подойдет. Но как быть,, например для неменяющихся типо
в, которые нужно связать для разных объектов по FK?
...
Рейтинг: 0 / 0
09.08.2014, 22:18
    #38716651
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
...
Рейтинг: 0 / 0
09.08.2014, 22:22
    #38716653
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
simlex,
...
Рейтинг: 0 / 0
09.08.2014, 22:33
    #38716658
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
О, слова у него кончились, наскальная живопись пошла...

Обломись, нету тебе в жизни счастья.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.08.2014, 22:34
    #38716660
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
simlex,
...
Рейтинг: 0 / 0
09.08.2014, 23:10
    #38716668
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
vmag, спасибо, но мне нужно чтобы при удалении либо Center1 либо Center2 удалялся связанный с ним Address. А по представленному рисунку ключи у меня не создаются. При добавлении внешнего ключа к Address (связь с Center1): "Столбцы в таблице Center1 не совпадают с существующим первичным ключом или ограничением UNIQUE"
...
Рейтинг: 0 / 0
09.08.2014, 23:31
    #38716673
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
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
...
Рейтинг: 0 / 0
09.08.2014, 23:33
    #38716676
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
vmag, спасибо. вопрос закрыт. если интересно, отпишусь, подготовив разширеный обзор проблемы и решения
...
Рейтинг: 0 / 0
09.08.2014, 23:54
    #38716681
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
simlexесли интересно, отпишусь, подготовив разширеный обзор проблемы и решения
Не интересно. Поскольку правильным решением является выкидывание таблицы address к ЧМ и
внесения адресов прямо в таблицы centrum1/2.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.08.2014, 23:55
    #38716682
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
Что за предметная область такая, что по одному адресу может множество каких-то центров быть. Как пр мне, одной, максимум двух таблиц на это дело хватит
...
Рейтинг: 0 / 0
10.08.2014, 00:33
    #38716689
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
Pallaris,на один центр - один адрес.
...
Рейтинг: 0 / 0
10.08.2014, 00:36
    #38716691
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
Dimitry Sibiryakov, зачем в таблицах дополнительные ненужные поля, если можно обойтись теми же двумя (Center1_Id и Center2_Id (при нашем примере)) в Address?
...
Рейтинг: 0 / 0
10.08.2014, 01:00
    #38716698
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
simlexPallaris,на один центр - один адрес.

Вам бы озвучить просто изначальную проблему без своих идей по её реализации, а то вы так только всех путаете... Зачем две одинаковые таблицы Center ????

Пусть тогда будет одна таблица Center с текстовым полем адрес и всё...
...
Рейтинг: 0 / 0
10.08.2014, 01:05
    #38716700
simlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
vmag, таблицы Center1 и Center2 simlexотличаются всем, кроме наличия адреса
...
Рейтинг: 0 / 0
10.08.2014, 01:10
    #38716703
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная реализация cascade delete
simlexvmag, таблицы Center1 и Center2 simlexотличаются всем, кроме наличия адреса

Посмотрите на своё пикасо.... они как раз абсолютно одинаковые (по структуре и названиях полей) кроме названий....
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильная реализация cascade delete / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]