powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Разбитие таблицы с большим ко-вом атрибутов(?)
25 сообщений из 28, страница 1 из 2
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965512
SamFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
С точки зрения правильности (нормализации) как стоит поступить?
Существует сущность с множеством атрибутов. Атрибутов около 30:
[id]
[typeID]
[categoryID]
[Площадь]
[Сайт]
[Город]
[Адрес]
[Координаты]
[Часы работы]
[О компании]
[ИТД]
[ИТП]
[Банковские реквизиты(17 атрибутов)]
Необходимо ли выделять банковские реквизиты в отдельную таблицу?
Ведь по сути мы получим две таблицы с одинаковым количеством записей.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965528
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Необходимо ли выделять банковские реквизиты в отдельную таблицу?
Нет, если у вас связь 1:1 была, есть и будет.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965530
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SamFisherНеобходимо ли выделять банковские реквизиты в отдельную таблицу?
Да. Причём со связью 1:N, поскольку счетов у одной компании может быть (гораздо) больше
одного.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965537
SamFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257,

Т.е. лучше (правильнее, быстрее...), когда много атрибутов в таблице (хоть сто мильёнов), чем разделение на таблицы?
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965544
SamFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

В данном случае нас интересует только один счет. Счет, с которым компании предпочтительнее работать.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965550
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Т.е. лучше (правильнее, быстрее ...), когда много атрибутов в таблице (хоть сто мильёнов), чем разделение на таблицы?
Если вам нужны все сто мильёнов атрибутов, то конечно быстрее если они лежат в одной строке.
А если нужны только популярные десять, то лучше (быстрее) чтобы остальные лежали тихо в своем темном пыльном углу.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965560
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SamFisherкогда много атрибутов в таблице (хоть сто мильёнов)
Мегаломанию брось. 30 атрибутов это довольно мало, так что вопроса ещё нет. А когда ты
дойдёшь до предела СУБД на число или суммарный размер полей, вопроса уже не будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965572
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SamFisherSERG1257,

Т.е. лучше (правильнее, быстрее...), когда много атрибутов в таблице (хоть сто мильёнов), чем разделение на таблицы?

В большинстве РСУБД есть ограничение на кол-во атрибутов - так что "сто мильенов" не получится. Но если Вы от этого ограничения далеки - вертикальное секционирование редко бывает осмысленным.
Т.е. на вопрос "необходимо ли выделение?" - однозначно ответ "не наобходимо".
На вопрос "полезно ли?" - я бы ответил "редко и маловероятно, но возможно , что будет полезным".
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965591
SamFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понял, большое спасибо за ответы!
А цифра чисто гипотетическая. Мне было интересно, есть ли такое количество атрибутов, при котором лучше табличку разбить.
К примеру, 30 атрибутов - это мало и не красиво только в визуальном редакторе, а вот 250 атрибутов - это уже много и правильнее будет разбить её на несколько таблиц.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965593
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь насчет правильнее - я думаю вы понимаете, что банковские реквизиты это отдельная сущность, то бишь если у вас сейчас связь 1:1 то совсем не факт что так будет всегда.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965608
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SamFisherДобрый день!
С точки зрения правильности (нормализации) как стоит поступить?
Существует сущность с множеством атрибутов. Атрибутов около 30:
Необходимо ли выделять банковские реквизиты в отдельную таблицу?


Само по себе большое количество атрибутов не является чем-то криминальным с точки зрения нормализации БД.
Нужно ли выделять БР в отдельную таблицу или нет -- вопрос твоей предметной области, ибо только она
диктует правила работы с данными.

SamFisherВедь по сути мы получим две таблицы с одинаковым количеством записей.


Нет, не получишь. На самом деле это будет связь не 1:1, а 1:0..1 .
Ну и если уж говорить о связи с реальностью, то банковских реквезитов у фирмы может быть несколько,
так что связь быстро потом перерастёт в 1:0..N.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965626
Фотография Alex_496
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица - для OLTP или аналитических задач?
Нужно задуматься - какова будет длина записи, как происходит обновление данных, а то можно получить тормоза.
А если не все столбцы должны видеть пользователи таблицы - разграничивать доступ на уровне столбцов?
а если потребуется SCD2 ?
Адреса чистить, унифицировать - не, не придется?

3NF никто не отменял, а сджойнить - при хорошо индексированных таблицах - не вопрос.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965637
SamFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, конкретно в данной ситуации, да, если порассуждать, то, возможно, можно придти к тому, что всё таки необходимо будет выделить эту таблицу, хотя бы для того, чтобы у нас осталась информация, на какой конкретно счет была произведена оплата...
Просто у меня частенько возникает вопрос: "А не грешно ли создавать много полей в таблице? А много - это сколько?". Ну и всё в таком духе.
Просто иногда какую-то часть можно выделить в отдельную сущность. Но опять же, возникает вопрос: "А зачем, если по сути отношение будет 1:1".
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965671
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SamFisherхотя бы для того, чтобы у нас осталась информация, на какой конкретно счет
была произведена оплата...
Для этого конкретный номер счёта вписывается/копируется в конкретный документ на оплату.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965707
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SamFisherС точки зрения правильности (нормализации) как стоит поступить?
С точки зрения нормализации фиолетово. С точки зрения правильности атрибуты, по смыслу относящиеся к отдельной сущности, лучше сразу вынести в отдельную таблицу. Причина этого в том, что в ходе изменений бизнес-логики такая переделка потребуется с вероятностью, неотличимой от 100%, а сделать сразу будет гораздо дешевле, нежели переделывать в ходе эксплуатации.

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

Не надо рассуждать. Dimitry Sibiryakov вам всё уже рассказал, - просто делайте.

> у меня частенько возникает вопрос

Чем больше вы знаете о предметной области, тем меньше у вас вопросов. Широкие таблицы - хороший повод для поиска ошибок.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38965957
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для банковских реквизитов полезно сделать отдельную таблицу, т.к. эти реквизиты предсказуемы и их список со временем не меняется. Т.е. их тип и список заведома известны и статичны.

А вот все остальное (зачастую неизвестное заранее или крайне редко употребляемое) следует упрятать в EAV.

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

Сколько БР занимают от общего объема одной записи?
Планируется ли у вас аудит данных?

К примеру, если БР - 90%, но наиболее интенсивно меняются оставшиеся 10%.
То какой смысл каждый раз в архив записывать 90% "статики"?

Логичней в таком варианте статику вынести в отдельную таблицу, пусть и с соотношением 1-1, но на статику вести свой архив (параметризируя каждую версию БР в архиве интервалом актуальности для версий основной записи MinVersion/MaxVersion).

Можно поработать в направлении аудита только измененных параметров в "цельной" таблице - но имхо, это головная боль.

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

А вот все остальное (зачастую неизвестное заранее или крайне редко употребляемое) следует упрятать в EAV.

Добавление новых колонок на каждый чих - тупик. Надоело уже объяснять.

заипетесь в аналитических задачах с EAV работать. Реляционка и стиральные машины машины не зря существуют, ну а кто-то впаривает EAV и Ретону
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38967122
babona,

Полностью согласен. И быстродействие будет храмать при больших объёмах данных. Даже если индексы будут грамотно построены.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38967544
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
babonaзаипетесь в аналитических задачах с EAV работать. Реляционка и стиральные машины машины не зря существуют, ну а кто-то впаривает EAV и РетонуПредлагаешь на каждый минисправочник клепать отдельную табличку ?
Что ты вообще предлагаешь ?

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

ну зачем из крайности в крайность. все lookup-таблицы складываем в одну таблицу, включая туда категорию лукапа и пару полей прозапас для TAG-овых значений и покрываем индексом с include.

Почитайте внимательно в Википедии в каких бизнес-областях истоки EAV. И там это оправдано, но и то надо сказать, что для стат.-аналитической обработки потом EAV разматывают в денормализованные датасеты.

Одна из проблем в том, что разработчиков OLTP- мало волнуют потребности DWH/BI - щиков,
DWH/BI - тоже в свою очередь мало отвечают за аналитические выкладки, а больше работаю по принципу - сгрести в кучу, чем больше терабайтов/кубов - тем лучше
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38969420
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну зачем из крайности в крайность.Это не крайности, а будни любой долгоживущей, эволюционирующей системы.
все lookup-таблицы складываем в одну таблицу, включая туда категорию лукапа и пару полей прозапас для TAG-овых значений БУГАГА... Ценный совет. Пеши исчо. :)

Хранить lookup-таблицы недостаточно. Нужно еще где-то хранить ссылки на них. Причем каждый день могут появляться новые ссылки.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38969444
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV,

"Универсальный справочник" и ЕАV - это вообще-то разные паттерны для разных целей.
...
Рейтинг: 0 / 0
Разбитие таблицы с большим ко-вом атрибутов(?)
    #38969465
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинLSV,
"Универсальный справочник" и ЕАV - это вообще-то разные паттерны для разных целей.Спасибо, Кэп ! :)
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Разбитие таблицы с большим ко-вом атрибутов(?)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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