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

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

Заполни эти три таблицы реальными данными, потом удали что нибудь, посмотри что получилось и определись в своих сомнениях - кроме тебя, больше это никому не нужно...
...
Рейтинг: 0 / 0
Правильная реализация cascade delete
    #38716572
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
simlexЕсть две таблицы, ссылающиеся на одну (Addresses). У последней созданы два FK на первые
В этом месте меня начинает грызть смутное сомнение... :)
...
Рейтинг: 0 / 0
Правильная реализация cascade delete
    #38716589
simlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опишу более подробно:
Есть две таблицы: 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
Правильная реализация cascade delete
    #38716591
simlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно так же определить отдельные Adress таблицы для Center1 и Center2 по один-к-одному, но это будет расточительно... Adresses буду в дальнейшем расширять, и возможно, такой подход подойдет. Но как быть,, например для неменяющихся типо
в, которые нужно связать для разных объектов по FK?
...
Рейтинг: 0 / 0
Правильная реализация cascade delete
    #38716592
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
simlexЕсть две таблицы: Center1 и Center2.
Чем они отличаются?

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

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

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

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

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

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

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

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


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