powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно хранить данные
25 сообщений из 313, страница 2 из 13
Как правильно хранить данные
    #38101524
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я очень злюсь, когда не могу что то вспомнить (эт часто, к сожалению, бывает со мной)
я бы мог вспомнить все - если бы я точно мог знать собственную и окружающего мира поведенческую модель
к сожалению я этого не знаю (или знаю только очень малую часть и то с точностью ***)
дык вот студенты - если вам неизвестна модель генерации снимка, то не удаляйте снимок, если вы сию ж секунду не собираетесь умереть)
декомпозировать (и хранить с методом агрегации), сжать без потерь и т.д. можно
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101527
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тот, кто считает, что он Постановщик задачи или там знаток Предметной области и потому его Классификация Окончательна - Дурак!
Вы постановщики в цепи постановщиков.
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101536
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosтот, кто считает, что он Постановщик задачи или там знаток Предметной области и потому его Классификация Окончательна - Дурак!
...
А тот, кто так не считает, как мы здесь выяснили, - баран)))
Итог обсуждения темы про "товары и заказы" - все Постановщики делятся на дураков и баранов!)))
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101539
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

а что? есть еще категории?
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101544
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Копирование товара в заказ - никак не мешает его жизненному циклу.

alexeyvg, сам товар - такое же значимое поле. Сущность Цена - просто проявляет те же самые проблемы, значительно чаще и шустрее, но сами проблемы - в точности такие же.Да это понятно. Но на практике остальное для заказа не так уж и важно.

А копирование товара в заказ проблемы не решит, потому что с товаром ещё много чего связано. Это получается совет вообще не делать ссылок на записи в БД, а всегда копировать запись целиком вместо ссылок? Чем заказ отличается от сотни других сущностей, в которых есть ссылка на товар?

Опять же "сам товар" - это десятки аттрибутов и сотни записей в нескольких связанных таблицах, как это "копировать в товар", непонятно.
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101545
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosБредятина,
а что? есть еще категории?
Видимо, нет. Кстати, тему про макротипы перенесли в MS SQL
http://www.sql.ru/forum/actualthread.aspx?tid=994944
так как она оказалась не про макротипы)))
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101550
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Да,да... именно такой копроподход и активно внедряется последнее время.
Я постепенно начинаю чувствовать необходимость даже в более старых подходах. Например, взять кое-кого за волосы и хорошенько промыть ему рот мылом.

Arhat109Его вариант реального применения:
Ваш опыт печален, но неинтересен. Разве что - в контексте разговора он в очередной раз показывает Ваше.. неполное и устаревшее представление о СУБД и их возможностях, которое Вы почему-то называете "квалификацией".

Arhat109Для этого существует логическое (и физическое из рабочий части БД) удаление с переносом в "архивные структуры".
(зевая) Удаление тут вообще не при чём. Я могу взять данные за 2010-й год, объявить их read-only, перекинуть на архивный носитель и положить в сейф. Когда потребуется - воткну носитель в сервер, сделаю запрос и получу данные. Если сделаю запрос, не воткнув носитель - получу ошибку со смыслом "нужные данные недоступны". И ни одного delete для этого не требуется, не выполняется и выполняться не будет. Учите матчасть.

Arhat109Дампы, опять же никто не отменял,
Это уже в духе анекдота "да, можете сжечь эти бумаги... но предварительно обязательно снимите с них ксерокопии".
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101552
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

кайф, так что все с категориями в порядке
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101556
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109MasterZiv, данные - они всего лишь данные. И когда они больше не нужны БЛ, их можно (иногда и нужно, и даже необходимо) удалять из БД. Другой вопрос "когда и как"... можно и логически, можно и путем добавления признака "активная запись", можно и путем переноса в архивное хранилище, можно и ... конкретное применение - сильно зависит от задачи.Я понимаю вашу позицию и целиком поддерживаю.

Только сейчас мы ведём речь о тех данных, которые нужны в БД.

ТС ясно сказал - ему нужны данные о заказах и о товарах, которые включены в этот заказ.

Обсуждать, как правильно удалить эти товары из базы в таком контексте глупо.

Вы же не предлагаете просто время от времени удалять товары, например, по принципу "в настоящий момент отсутствуют на складе"?

Это всё есть "активные" данные, они естественно в базе нужны.

Как отделить "неактивные" данные и собрать мусор - это отдельная тема.
И в принципе действительно на самом деле проще никогда не удалять, это просто намного дешевле. Реально даже крупная компания за свой жизненный цикл обычно работает с настолько мизерным количеством товара (ну, несколько милионов, ну пусть даже 100 милионов, это вообще какой то монстр), что разница в стоимости удаления и хранения лишних данных соверешнно очевидна.
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101563
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

аваще вопрс интересны
вот есть "таблица", "внешний ключ" и "триггер"
с помощью этого триплета можно много чего делать
но часто нужны "связанные таблицы", "обобщенные таблицы", "обобщенные триггеры", "связанные триггеры" (первого порядка)
но часто нужны "связанные таблицы", "обобщенные таблицы", "обобщенные триггеры", "связанные триггеры" (второго порядка)
...
но часто нужны "связанные таблицы", "обобщенные таблицы", "обобщенные триггеры", "связанные триггеры" (нного порядка)
вопрос - можно ли придумать структурные элементы, которые были бы адекватны для любых порядков обобщения с единой семантикой в любом пордяке?
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101567
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вы постановщики в цепи постановщиков

Именно, Сахават, именно. Вот поэтому - очень осторожная регистрация только фактов. И очень придирчивый анализ того, что можно считать фактом.
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101569
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

аваще вопрс интересны
вот есть "таблица", "внешний ключ" и "триггер"
с помощью этого триплета можно много чего делать
но часто нужны "связанные таблицы", "обобщенные таблицы", "обобщенные триггеры", "связанные триггеры" (первого порядка)
но часто нужны "связанные таблицы", "обобщенные таблицы", "обобщенные триггеры", "связанные триггеры" (второго порядка)
...
но часто нужны "связанные таблицы", "обобщенные таблицы", "обобщенные триггеры", "связанные триггеры" (нного порядка)
вопрос - можно ли придумать структурные элементы, которые были бы адекватны для любых порядков обобщения с единой семантикой в любом пордяке?
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101571
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

фактов, или ссылкок на правил генерации фактов (Функций (версия и т.д.), Аргументы)
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101576
NetObserver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал ветку, улыбнулся . Если отбросить комментарии "сам дурак", то проблема устаревших данных, или как здесь говорят "мусора", существует в нескольких разрезах:
1)Проблема пользователя - перегрузка устаревшими данными списков\справочников\локапов и т.п.
2)Проблема программиста - как правильно здесь замечено, повседневно используется ~5-10% данных базы, остальное - неактуальные данные. Если система написана без учета роста этих данных, и использует их в выборках - получаем тормоза, недовольство пользователей и начальства.

Предлагаемые здесь методы решение проблем:
А)Разрешить пользователям удалять(безвозвратно) данные. В первую очередь из справочников.
К чему это ведет:
+ решается проблема 1), точнее перекладывается на пользователей
+ частично решается проблема 2), база та все равно растет

- Возникают другие проблемы
3)Проблема Бизнеса - отчеты за прошлые периоды не полны или вообще неправильны.
4)Проблема Пользователей - удалили актуальные данные.

Дальше идет решение уже новых проблем:
переписывание отчетов (INNER JOIN -> LEFT JOIN, все обрамляется ISNULL и т.п.)
денормализация базы (смотри ветку выше - перенос названия товара из справочника в заказ и т.д)


Б)Ввод логического удаления - флаг "не активен\удален" для элементов справочников.
Это решает проблему 1), но не решает проблему 2)
Решение проблемы 2) - глубокая оптимизация, вещь трудозатратная, неблагодарная, трудно-объяснимая для начальства\бизнеса.


В)Удаление логически связанных данных.
Обычно удаляют данные за период - документы\ордера\сделки\заказы\..., но можно удалить и элементы справочников на которые больше нет ссылок.
Решается проблема 2) и частично проблема 1), тех же клиентов\контрагентов как-то не принято удалять даже если он "умер".
Может встретить противодействие начальства - "че за х..? а вдруг нам отчет за 2002 надо построить?"

Г)Вариант с Б) + В) - логическое удаление + периодическая чистка базы.
На мой взгляд наиболее оптимальный, хотя и более трудозатратный вариант.

Вот как-то так!
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101579
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> фактов, или ссылкок на правил генерации фактов (Функций (версия и т.д.), Аргументы)

Не-не-не, только на факты. Факт - вещь по определению неизменяемая. А вот правила генерации уже могут меняться, т. е. ссылка приобретает вид (правило, версия правила). Оверхед.
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101587
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NetObserver,

первый вменяемый пост.

Всё верно, с точки зрения проблемы мусора в БД. Соглашусь.

Я написал первый пост несколько из других соображений, а именно из необходимости абстрагировать заказ от других сущностей в БД. Не вижу принципиальной разницы между "названием" и "ценой" товара. И то и другое - суть атрибуты, имеющие свойство меняться со временем (например исправление опечаток в названии или сознательное отстраивание от названия конкурента - видел и такое).

Почему тогда копирование цены в заказ - не вызывает вопросов, по сравнению с названием?

Банально: нет копирования, есть только ссылка на каталог. Что имеем:
состояние 1: выписка заказа по первоначальному названию. Отправка заказа клиенту.
состояние 2: изменение названия. -> автоизменение содержимого заказа на новое название (проблема таже что и с ценой!)...
состояние 3,4: отгрузка товара по новому названию и отправка накладной с новым товаром

... в итоге получаем рекламацию: пересортица при поставке!

и вот на такую пересортицу я в своей практике - реально натыкался!
строка заказа (за точность номера железки не ручаюсь):
HUB 3COM-15712-ME 10шт.

строка счет-фактуры и накладной на следующий день (это реальная ситуация)

SWITCH 3COM-15712-ME 10шт.

реакция получателя (почта, наложенный платеж, оплата доставки продавцом): это не тот товар, который был закуплен. Верните продавцу обратно.

... и попробуйте доказать клиенту, что он теперь должен оплатить двойную доставку, поскольку отказ по его вине (это же тотже товар, только переименован!)... :)
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101597
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

никто никаких цен никуда не "копирует"
"Цена" в "Заказе" - соглашение чо такой то товар по такой то цене именно в в этом заказе имеенно между этими сторонами заказа достигнуто
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101601
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

есть такая теория, что невозможно все факты хранить (вселенная меньше объема информации о ней)
а вот теории что все факты низзя генерить одним генератором нету :)
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101602
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

ну да... именно на это наименование именно этого товару... :)
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101603
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> никто никаких цен никуда не "копирует"

Это тупиковый путь, Сахават. Человеку не разницу между акцептом оферты и соглашением о намерениях нужно объяснять, а рассказывать все с самого начала.
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101604
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> есть такая теория, что невозможно все факты хранить

А все и не нужно.

А еще есть теория, что окружающий мир - качественный симулятор. Ссылаясь на правила, вы еще и неявно ссылаетесь на ошибки генератора. Вопрос, что хуже - кривой факт или кривой генератор - сложный вопрос. Но - как факт - с кривыми фактами бороться проще.
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101607
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

все жертвы несвоевременного аборта, тут нифига не поделаешь
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101624
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Я написал первый пост несколько из других соображений, а именно из необходимости абстрагировать заказ от других сущностей в БД. Не вижу принципиальной разницы между "названием" и "ценой" товара. И то и другое - суть атрибуты, имеющие свойство меняться со временем (например исправление опечаток в названии или сознательное отстраивание от названия конкурента - видел и такое).

Почему тогда копирование цены в заказ - не вызывает вопросов, по сравнению с названием?

Банально: нет копирования, есть только ссылка на каталог. Что имеем:
состояние 1: выписка заказа по первоначальному названию. Отправка заказа клиенту.
состояние 2: изменение названия. -> автоизменение содержимого заказа на новое название (проблема таже что и с ценой!)...
состояние 3,4: отгрузка товара по новому названию и отправка накладной с новым товаром

... в итоге получаем рекламацию: пересортица при поставке!Выглядит абсурдом. Какое то автоизменение цены, названия :-)

Независимо от того, изменилось назвыание товара или нет, отгружен будет именно тот товар, который привязан к заказу. Не по названиям же кладовщик отгружает :-)

Сохранение каталожной цены товара в момент продажи может быть полезно для неких статистических расчётов, но к самим бизнес-процессам не имеет ровно никакого отношения, так же, как и название товара.

Оба аттрибута товара - название и цена - для заказа и всех процессов совершенно бесполезны, не имеют ровно никакого значения.
Но цена сохраняется, как я уже сказал, для получения статистик, название товара, конечено, можно тоже сохранять для этих целей, но в жизни я таких целей не встречал.
Arhat109и вот на такую пересортицу я в своей практике - реально натыкался!
строка заказа (за точность номера железки не ручаюсь):
HUB 3COM-15712-ME 10шт.

строка счет-фактуры и накладной на следующий день (это реальная ситуация)

SWITCH 3COM-15712-ME 10шт.

реакция получателя (почта, наложенный платеж, оплата доставки продавцом): это не тот товар, который был закуплен. Верните продавцу обратно.Это не пересортица.
Счёт-фактура или накладная - это не заказ, это отпечатанные документы, их понятно нужно сохранять полностью, само собой.
NetObserverРешение проблемы 2) - глубокая оптимизация, вещь трудозатратная, неблагодарная, трудно-объяснимая для начальства\бизнеса.Да не глубокая оптимизация, а правильное место роста рук :-)

Прямо так страшно, "глубокая оптимизация", и с придыханием "целых десять тыщь товаров!!!"

Что это за программисты, если у них на 10К записей тормоза? ну и понятно, что тогда варианты В) и Г) для них полностью недоступны.
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101626
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgArhat109MasterZiv, данные - они всего лишь данные. И когда они больше не нужны БЛ, их можно (иногда и нужно, и даже необходимо) удалять из БД. Другой вопрос "когда и как"... можно и логически, можно и путем добавления признака "активная запись", можно и путем переноса в архивное хранилище, можно и ... конкретное применение - сильно зависит от задачи.Я понимаю вашу позицию и целиком поддерживаю.
Только сейчас мы ведём речь о тех данных, которые нужны в БД.
ТС ясно сказал - ему нужны данные о заказах и о товарах, которые включены в этот заказ.
Это Ваша вольная интерпретация того, что сказал автор темы))
Его предложение
"Товар удалили, в результате в таблице заказов остался идентификатор, который ссылается на несуществующий товар."
точно также можно интерпретировать как необходимость удаления товаров))
alexeyvgОбсуждать, как правильно удалить эти товары из базы в таком контексте глупо.
)))
...
Рейтинг: 0 / 0
Как правильно хранить данные
    #38101636
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosБредятина,
аваще вопрс интересны
вот есть "таблица", "внешний ключ" и "триггер"
с помощью этого триплета можно много чего делать
Некорректно как-то. "внешний ключ" завис в воздухе, что только лишний раз подчеркивает проблемы "ключей"))
На самом деле, есть два типа сущностей связь между ними и множество триггеров (до и после создания, обновления, удаления экземпляров обоих типов сущностей, до и после создания, удаления связи).
Разумеется. можно много чего делать.
ViPRosно часто нужны "связанные таблицы", "обобщенные таблицы", "обобщенные триггеры", "связанные триггеры" (первого порядка)
Не следовало задвигать интересную тему в ответ на мой вопрос о маппинге, который очевидным образом приводил к EAV вместо РМД))
Теперь что, с нуля начинать рассуждения о макротипах и классификаторах???
Хорошо, приводите пример "связанных типов сущности", "обобщенных типов сущности" (это нам уже неплохо известно), "обобщенных триггеров", "связанных триггеров" (это нам, пока, не известно).
Сразу уж и первого и второго, и n-го порядков...
ViPRosвопрос - можно ли придумать структурные элементы, которые были бы адекватны для любых порядков обобщения с единой семантикой в любом порядке?
Разве макротипы не решают вопрос???
...
Рейтинг: 0 / 0
25 сообщений из 313, страница 2 из 13
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно хранить данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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