Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
late-удаление. Как? Подскажите.
|
|||
|---|---|---|---|
|
#18+
Всем привет. Думаю над следующей вещью и не могу сообразить. Есть две таблицы следующего вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Чего хочется: 1) По таблице items_values, а именно по полю value, пользователь должен искать нужные ему items. 2) Items - это пользовательские объекты и пользователь может их удалять, имея на то права. Но администратор ресурса, использующего данную БД, не хочет, чтобы items удалялись навсегда, то есть посредством вызова DELETE. 3) Я, как программист, подумал хорошо бы сделать late-удаление, что по своей идее совпадает с идеей администратора. Это значит что надо метить items, как deleted, а потом в batch-режиме (скажем ночью) удалять их. Или по запросу администратора. Я подумал, что это должно снять нагрузку с БД, когда (то есть днем) у нее хватает забот и без удаления. Проблема: Если я добавлю в таблицу items поле deleted BOOL, то при поиске по полю value таблиы items_values придется делать join, чтобы отбрасывать values удаленных items. Чтобы не делать join можно добавить поле deleted в таблицу items_values. Но тогда при удалении item'a придется запускать UPDATE не только на items, но и на items_values. Но тогда возникает резонный вопрос: толку от late-уаления, если все равно выполняются такое же количество UPDATE'ов, сколько выполнялось бы DELETE'ов. Отсюда возникли вопросы: Где тут выиграть? 1) Если не брать в счет администратора и удалять items сразу же, тогда получается, что при поиске не надо писать никаких join'ов. 2) Если же реализовывать late-удаление, то как?Cgfcv, 3) И вообще, нормально ли это - использовать при поиске такие вот join'ы, типа проверки на удаленные элементы. Мне кажется не очень. Подскажите. Может я просто не о том думаю? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2005, 14:32 |
|
||
|
late-удаление. Как? Подскажите.
|
|||
|---|---|---|---|
|
#18+
Что Вас смущает по поводу поля Deleted? Сделаете поле Deleted только лучше не BOOL а дату удаления, повесте индекс по нему. Сделайте вьюшки или хранимки которые будут возвращать SELECT * FROM items WHERE (Deleted is null) и работайте только с ними, а не с таблицами напрямую. Тогда данные можно будет быстро восстановить, а если еще одно поле добавить DeletedWho и прописывать например в триггере кто удалил... А если иметь еще поле DeletedWhy и требовать у пользователя причину удаления, то вообще жизнь Ваших данных будет песней. Grigory2) Если же реализовывать late-удаление, то как?Cgfcv, Это что какое-то новое ругательство? ------------------------------------------------------- Люди делятся на 2 категории - те, которые делают бэкапы, и те, которые будут делать бэкапы. (c)Шкшыр скуфь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 00:19 |
|
||
|
late-удаление. Как? Подскажите.
|
|||
|---|---|---|---|
|
#18+
"преждевременная оптимизация корень всех бед". Может, в данном случае, это и не так :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 14:45 |
|
||
|
late-удаление. Как? Подскажите.
|
|||
|---|---|---|---|
|
#18+
GirgoryЕсли я добавлю в таблицу items поле deleted BOOL, то при поиске по полю value таблиы items_values придется делать join, чтобы отбрасывать values удаленных items. Не обязательно. Отсеиш их потом, когда будешь показывать эти items. Girgory Чтобы не делать join можно добавить поле deleted в таблицу items_values. абсолютно лишнее. Даже если JOIN придется делать. Ничего страшного. Girgory Отсюда возникли вопросы: Где тут выиграть? Меньше парица. Girgory 3) И вообще, нормально ли это - использовать при поиске такие вот join'ы, типа проверки на удаленные элементы. Мне кажется не очень. Нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 20:23 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=145&tid=1545519]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 327ms |

| 0 / 0 |
