powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Теоретический вопрос организации инфы изменения строк
18 сообщений из 18, страница 1 из 1
Теоретический вопрос организации инфы изменения строк
    #36929736
Не важно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Делал на днях базу и в каждой таблице по-старинке начал лупить колонки: CreateUser, CreateDate, UpdateUser, UpdateDate. А потом подумал - зачем их фигачить в каждую таблицу, если можно сделать таблицу с четыремя этими колонками и референсить на нее в каждой таблице? Просто и со вкусом. Ограничение тут явное я вижу только одно - суммарное число строк во всех таблицах должно быть приемлемым, чтобы колонки ID этой таблицы хватило.

А вы что думаете про такой способ ?
Просто где бы я не смотрел - люди не обламываются добавлять эти четыре колонки в каждую таблицу. Видимо есть тут какой-то другой драфтбак, не видимый пока мне.
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36929748
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не важноА вы что думаете про такой способ ?
Просто где бы я не смотрел - люди не обламываются добавлять эти четыре колонки в каждую таблицу. Видимо есть тут какой-то другой драфтбак, не видимый пока мне.Плохой способ - больше места для данных, намного тяжелее запросы.

Странная идея - атрибуты с одинаковым назначением от разных сущностей пихать в какую-то общую сущность...
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36929766
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо для получения максимальной производительности запросов и упрощения их кода. А то эти лишние join-ы будут только глаза мозолить в сложных запросах.
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36929769
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgНе важноА вы что думаете про такой способ ?
Просто где бы я не смотрел - люди не обламываются добавлять эти четыре колонки в каждую таблицу. Видимо есть тут какой-то другой драфтбак, не видимый пока мне.Плохой способ - больше места для данных, намного тяжелее запросы.Это справочные данные, вряд ли они будут использоваться для, например, фильтрации. Так что насчет "тяжелее запросы" не соглашусь. А в ряде случаев, когда эти данные не нужны даже для отображения, так и легче.

alexeyvgСтранная идея - атрибуты с одинаковым назначением от разных сущностей пихать в какую-то общую сущность...Это, как раз, в общем случае нормально.

А вот что мне кажется плохим - какая недоделанная "историчность" - апдейтить запись могут много раз, а сохранится только самый последний. Тут мне видится два варианта:
- нужно знать всю историю изменений по этой записи (тогда нужно хранить информацию обо всех апдейтах и, возможно, даже исторические данные).
- важно только текущее состояние записи и последний редактировавший ее является целиком за нее ответственным (тогда не вижу смысла в CreateUser, CreateDate).
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36929772
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не важноможно сделать таблицу с четыремя этими колонкамиИ еще нужно знать, что будет происходить с этой таблицей. Если, например, в базе часть таблиц будет реплицироваться, а часть нет, то эту таблицу придется либо реплицировать целиком (и гонять лишние данные), либо отказаться от репликации в связи с большой скоростью роста этой таблицы.

И, кстати, тут CreateUser, CreateDate опять будут лишние, т.к. они будут многократно повторятся для одной и той же записи при каждом ее апдейте.
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36929976
Не важно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg
Плохой способ - больше места для данных, намного тяжелее запросы.

А чем он плох? добавится один джоин по кластерному индексу. Тут конечно может быть проблема с созданием оптимальных запросов, поскольку один джоин в запросе может кардинально поменять политику выборки. Это есть - по крайней мере в MS SQL.

alexeyvg
Странная идея - атрибуты с одинаковым назначением от разных сущностей пихать в какую-то общую сущность...

Я думаю что это нормально - как в ООП. Общие вещи в базовый класс.

miksoft
А вот что мне кажется плохим - какая недоделанная "историчность" - апдейтить запись могут много раз, а сохранится только самый последний.

Тут нужно немного пояснить. База делается как бэ в соответствии с базой одного CRM (MS Dynamics) Там как раз ведутся две колонки - создавший и последний обновивший. Промежуточные неважны. О репликации разговора нет - это база серверной части приложения. Она одна и в одном месте.

Тут еще фишка есть такая как ОРМ. И с добавлением еще одной таблицы префоманс генереного запроса, теоретически, может просесть.
Вот я и думаю - стоит ли затевать такой "рефакторинг" базы или по старинке делать колонки в каждой таблице
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36929984
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftalexeyvgПлохой способ - больше места для данных, намного тяжелее запросы.Это справочные данные, вряд ли они будут использоваться для, например, фильтрации. Так что насчет "тяжелее запросы" не соглашусь. А в ряде случаев, когда эти данные не нужны даже для отображения, так и легче.Согласен, конечно важно, как эти данные будут использоваться...

Не важноalexeyvg
Плохой способ - больше места для данных, намного тяжелее запросы.

А чем он плох? добавится один джоин по кластерному индексу. Тут конечно может быть проблема с созданием оптимальных запросов, поскольку один джоин в запросе может кардинально поменять политику выборки. Это есть - по крайней мере в MS SQL.Зависит от использования этих полей.

Если нужно показывать поля постоянно - добавится просто джойн. Это-же не повышает производительность?

А вот если в запросах будет, например, фильтр для учёта прав, или что-то вроде показа записей их создателю первыми, то такое разделение просто поставит всё раком (например, в постраничных выборках без фильтров).

Не важноalexeyvg
Странная идея - атрибуты с одинаковым назначением от разных сущностей пихать в какую-то общую сущность...

Я думаю что это нормально - как в ООП. Общие вещи в базовый класс.Это для ООП нормально. И то - нормально в наследовании, а здесь-же нету наследования.

В ООП ведь при создании объекта класса-наследника не создаётся объект, в котором в качестве члена присутствует объект класса-родителя?

Для РСУБД так делают, но не по принципу наличия одинаковых имён полей :-) , а выделяя именно общую сужность.

Т.е. можно выделить сущность "документ" из сущностей вида "документ типа ХХХ", сделать "документ" отдельной таблицей и перенести туда какие-то общие атрибуты.
ПРи этом действия могут быть сделаны над общей и над производными таблицами как по отдельности, так и вместе.

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

Не важноmiksoft
А вот что мне кажется плохим - какая недоделанная "историчность" - апдейтить запись могут много раз, а сохранится только самый последний.

Тут нужно немного пояснить. База делается как бэ в соответствии с базой одного CRM (MS Dynamics) Там как раз ведутся две колонки - создавший и последний обновивший. Промежуточные неважны.Если не важны - вопросов нет.

Обычно как раз в поисках виноватого эти данные очень даже важны. :-)

Какая разница, кто там последный поменял неизвестно что ? Важно, кто именно поменял что-то конкретное, например, какую-то содержательую часть записи.

Не важноТут еще фишка есть такая как ОРМ. И с добавлением еще одной таблицы префоманс генереного запроса, теоретически, может просесть.
Вот я и думаю - стоит ли затевать такой "рефакторинг" базы или по старинке делать колонки в каждой таблицеНу вот, вы даже беспокоитесь, не слишком ли сложно будет клиенту прочитать :-) А делать джойн по ключу - это по вашему ничего не стоит.
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36930083
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgКакая разница, кто там последный поменял неизвестно что ? Важно, кто именно поменял что-то конкретное, например, какую-то содержательую часть записи.

+1
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36930087
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
судя по всему, цель - просто сделать. А практическая польза от этого не интересует. Тогда какая разница как сделать?
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36930565
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft
alexeyvgСтранная идея - атрибуты с одинаковым назначением от разных сущностей пихать в какую-то общую сущность...Это, как раз, в общем случае нормально.

Нормальная идея - это анализировать такие совпадения. А вот сразу пихать в общую - таки, странная, да... :)

miksoftЭто справочные данные, вряд ли они будут использоваться для, например, фильтрации.

"Хочу отфильтровать все документы/отчёты/настройки, которые я создавал в этом месяце" - не пойдёт?

miksoft
А в ряде случаев, когда эти данные не нужны даже для отображения, так и легче.

Ммм. Чем и насколько легче?

miksoft
А вот что мне кажется плохим - какая недоделанная "историчность" - апдейтить запись могут много раз, а сохранится только самый последний. Тут мне видится два варианта:
- нужно знать всю историю изменений по этой записи (тогда нужно хранить информацию обо всех апдейтах и, возможно, даже исторические данные).

Одно другому не мешает..

miksoft
- важно только текущее состояние записи и последний редактировавший ее является целиком за нее ответственным (тогда не вижу смысла в CreateUser, CreateDate).

Необходимость CreateUser, CreateDate:
1. смотри пример выше с фильтрацией
2. полезно при репликациях
3. полезно при чистке БД - слиянии...
Правда, в случае ведения полной истории вся эта информация доступна из истории, но всё-таки стоит сравнить производительность...
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36930704
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойmiksoftЭто справочные данные, вряд ли они будут использоваться для, например, фильтрации."Хочу отфильтровать все документы/отчёты/настройки, которые я создавал в этом месяце" - не пойдёт?Зависит от предметной области.
У нас, например, такого вопроса не возникало никогда за много лет.
Обычно все разборки идут от объекта - товара, накладной, чека, распродажи и т.п.АнатоЛой
miksoftА в ряде случаев, когда эти данные не нужны даже для отображения, так и легче.Ммм. Чем и насколько легче?Если, например, в каком-то запросе понадобится сканирование таблицы с объектами, то этот запрос станет легче, т.к. ему придется меньше данных читать с диска.
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36930766
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой"Хочу отфильтровать все документы/отчёты/настройки, которые я создавал в этом месяце" - не пойдёт?Серверу придётся сделать 2 отфильтрованных списка ID документов, а потом уже вычислить по ним пересечение. Это тяжёлая операция. Конечно, "тяжесть" проявится, если данных много, на тыще записей не заметите.
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36930792
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 31.10.2010 13:01, Не важно wrote:
> А вы что думаете про такой способ ?

Замечательный способ.

> Просто где бы я не смотрел - люди не обламываются добавлять эти четыре колонки в
> каждую таблицу. Видимо есть тут какой-то другой драфтбак, не видимый пока мне.

Кроме того, что нужно будет JOIN-ить таблицу изменений при каждой выборке
данных, требующей также и CreateUser, CreateDate или UpdateUser, UpdateDate,
(это не страшно) -- никаких недостатков.

Кстати, полей тогда нужно наверное только 3:

modificationType, user, date,
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36930796
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 31.10.2010 13:29, alexeyvg wrote:

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

Ничего ни тяжёлого (ни для программиста, ни для сервера), ни странного нет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36930802
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойНормальная идея - это анализировать такие совпадения. А вот сразу пихать в общую - таки, странная, да... :)Ну так вот я и анализирую.

У вас, собственно, два аргумента:
1. вам так нравится
2. в ООП так делают

Я говорил, что вынесение части полей в общую сущность можно в том случае, если это именно самостоятельная сущность, с которой работает ваша система.

Например, есть таблица Документ, есть много таблиц ДокументТипаХХХ.

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

miksoft ещё напомнил про случаи вынесения широких редкоиспользуемых полей одной таблицы для уменьшения объёма скана.

У вас, судя по описанию, таких вариантов нету.
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36932236
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg, я так понял, что всё описанное направлено ТС? А то я как раз целиком с вашими выкладками согласен :)
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36932261
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойalexeyvg, я так понял, что всё описанное направлено ТС? А то я как раз целиком с вашими выкладками согласен :)Да-да, конечно - не совсем внятно написал...
...
Рейтинг: 0 / 0
Теоретический вопрос организации инфы изменения строк
    #36932493
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не важноА потом подумал - зачем их фигачить
В таком виде мысль наиболее правильна

Не важноА вы что думаете про такой способ ?
Чаще всего это четыре нафиг не нужных поля. В следующем по частоте случае - это четыре поля, которых не хватает для решения задачи и приходится фигачить ещё :)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Теоретический вопрос организации инфы изменения строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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