Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Удаляем рекорд в базе с умом  [new]
ИнвизиблДелит
Guest
Пишу свою первую серьёзную программу. До этого занимался делал лабы и курсовые.

Суть вопроса: как правильно удалять записи в базе на которые есть ссылки?

Например есть заказы и есть товары. Оператор хочет удалить товар ботинки "Гриндерс". Но есть таблица заказанных товаров и если удалить гриндара, то они просто исчезнут из всех заказов.

Вопрос: чё делать? Как правильно надо организовать архитектуру?
27 окт 10, 03:25    [9682010]     Ответить | Цитировать Сообщить модератору
 Re: Удаляем рекорд в базе с умом  [new]
GL
Member

Откуда: Харьков
Сообщений: 1513
ИнвизиблДелит,

(например) не удалять, а помечать как удалённые.
(или) не давать удалять. нахрена их заказывать, если никто о них уже не будет знать
27 окт 10, 03:36    [9682019]     Ответить | Цитировать Сообщить модератору
 Re: Удаляем рекорд в базе с умом  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
ИнвизиблДелит, наименования товаров должны быть вне зависимости от самого наличия товаров. Кроме того, почитайте про типы SCD - slow changing dimensions - <a href="http://www.xt-r.com/2010/10/blog-post.html">тут, например</a>
27 окт 10, 03:55    [9682029]     Ответить | Цитировать Сообщить модератору
 Re: Удаляем рекорд в базе с умом  [new]
Tolka
Member

Откуда:
Сообщений: 199
ИнвизиблДелит
Суть вопроса: как правильно удалять записи в базе на которые есть ссылки?


Никак. Поставить проверку и ругаться. Если удалишь - побьёшь данные. Либо удалять вначале чаилдов, а потом уже парента.
27 окт 10, 04:34    [9682041]     Ответить | Цитировать Сообщить модератору
 Re: Удаляем рекорд в базе с умом  [new]
Mikst
Member

Откуда: Москва
Сообщений: 983
ИнвизиблДелит

Суть вопроса: как правильно удалять записи в базе на которые есть ссылки?


Суть ответа: ничего из базы не удалять.

Любая сущность (товар) имеет свои атрибуты (название, цену) статус это такой же атрибут. Видимый/невидимый, удален/не удален/восстановлен из удаленных и т.д.

PS: Комрады-гуру, без наездов, это всего-лишь "удочка".

ИнвизиблДелит - приведи хотя бы три причины, для чего в БД необходимо безвозвратно удалять данные. После того, как тут получишь опровержение их разумности, думаю сам поймешь, когда можно, а когда нельзя пользоваться операцией DELETE.
27 окт 10, 10:54    [9683027]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить