|
|
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
Добрый день! С точки зрения правильности (нормализации) как стоит поступить? Существует сущность с множеством атрибутов. Атрибутов около 30: [id] [typeID] [categoryID] [Площадь] [Сайт] [Город] [Адрес] [Координаты] [Часы работы] [О компании] [ИТД] [ИТП] [Банковские реквизиты(17 атрибутов)] Необходимо ли выделять банковские реквизиты в отдельную таблицу? Ведь по сути мы получим две таблицы с одинаковым количеством записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:33 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
>Необходимо ли выделять банковские реквизиты в отдельную таблицу? Нет, если у вас связь 1:1 была, есть и будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:39 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
SamFisherНеобходимо ли выделять банковские реквизиты в отдельную таблицу? Да. Причём со связью 1:N, поскольку счетов у одной компании может быть (гораздо) больше одного. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:41 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
SERG1257, Т.е. лучше (правильнее, быстрее...), когда много атрибутов в таблице (хоть сто мильёнов), чем разделение на таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:46 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, В данном случае нас интересует только один счет. Счет, с которым компании предпочтительнее работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:47 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
>Т.е. лучше (правильнее, быстрее ...), когда много атрибутов в таблице (хоть сто мильёнов), чем разделение на таблицы? Если вам нужны все сто мильёнов атрибутов, то конечно быстрее если они лежат в одной строке. А если нужны только популярные десять, то лучше (быстрее) чтобы остальные лежали тихо в своем темном пыльном углу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:50 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
SamFisherкогда много атрибутов в таблице (хоть сто мильёнов) Мегаломанию брось. 30 атрибутов это довольно мало, так что вопроса ещё нет. А когда ты дойдёшь до предела СУБД на число или суммарный размер полей, вопроса уже не будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 16:55 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
SamFisherSERG1257, Т.е. лучше (правильнее, быстрее...), когда много атрибутов в таблице (хоть сто мильёнов), чем разделение на таблицы? В большинстве РСУБД есть ограничение на кол-во атрибутов - так что "сто мильенов" не получится. Но если Вы от этого ограничения далеки - вертикальное секционирование редко бывает осмысленным. Т.е. на вопрос "необходимо ли выделение?" - однозначно ответ "не наобходимо". На вопрос "полезно ли?" - я бы ответил "редко и маловероятно, но возможно , что будет полезным". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 17:03 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
Я понял, большое спасибо за ответы! А цифра чисто гипотетическая. Мне было интересно, есть ли такое количество атрибутов, при котором лучше табличку разбить. К примеру, 30 атрибутов - это мало и не красиво только в визуальном редакторе, а вот 250 атрибутов - это уже много и правильнее будет разбить её на несколько таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 17:16 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
Теперь насчет правильнее - я думаю вы понимаете, что банковские реквизиты это отдельная сущность, то бишь если у вас сейчас связь 1:1 то совсем не факт что так будет всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 17:17 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
SamFisherДобрый день! С точки зрения правильности (нормализации) как стоит поступить? Существует сущность с множеством атрибутов. Атрибутов около 30: Необходимо ли выделять банковские реквизиты в отдельную таблицу? Само по себе большое количество атрибутов не является чем-то криминальным с точки зрения нормализации БД. Нужно ли выделять БР в отдельную таблицу или нет -- вопрос твоей предметной области, ибо только она диктует правила работы с данными. SamFisherВедь по сути мы получим две таблицы с одинаковым количеством записей. Нет, не получишь. На самом деле это будет связь не 1:1, а 1:0..1 . Ну и если уж говорить о связи с реальностью, то банковских реквезитов у фирмы может быть несколько, так что связь быстро потом перерастёт в 1:0..N. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 17:24 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
Таблица - для OLTP или аналитических задач? Нужно задуматься - какова будет длина записи, как происходит обновление данных, а то можно получить тормоза. А если не все столбцы должны видеть пользователи таблицы - разграничивать доступ на уровне столбцов? а если потребуется SCD2 ? Адреса чистить, унифицировать - не, не придется? 3NF никто не отменял, а сджойнить - при хорошо индексированных таблицах - не вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 17:34 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
Ну, конкретно в данной ситуации, да, если порассуждать, то, возможно, можно придти к тому, что всё таки необходимо будет выделить эту таблицу, хотя бы для того, чтобы у нас осталась информация, на какой конкретно счет была произведена оплата... Просто у меня частенько возникает вопрос: "А не грешно ли создавать много полей в таблице? А много - это сколько?". Ну и всё в таком духе. Просто иногда какую-то часть можно выделить в отдельную сущность. Но опять же, возникает вопрос: "А зачем, если по сути отношение будет 1:1". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 17:41 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
SamFisherхотя бы для того, чтобы у нас осталась информация, на какой конкретно счет была произведена оплата... Для этого конкретный номер счёта вписывается/копируется в конкретный документ на оплату. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 18:07 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
SamFisherС точки зрения правильности (нормализации) как стоит поступить? С точки зрения нормализации фиолетово. С точки зрения правильности атрибуты, по смыслу относящиеся к отдельной сущности, лучше сразу вынести в отдельную таблицу. Причина этого в том, что в ходе изменений бизнес-логики такая переделка потребуется с вероятностью, неотличимой от 100%, а сделать сразу будет гораздо дешевле, нежели переделывать в ходе эксплуатации. SamFisherМне было интересно, есть ли такое количество атрибутов, при котором лучше табличку разбить. Нет, такого значения нет. В то же время ситуация "атрибутов слишком много" обычно наводит на мысль о допущенных ошибках проектирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 18:48 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
> если порассуждать, то, возможно, можно придти к тому Не надо рассуждать. Dimitry Sibiryakov вам всё уже рассказал, - просто делайте. > у меня частенько возникает вопрос Чем больше вы знаете о предметной области, тем меньше у вас вопросов. Широкие таблицы - хороший повод для поиска ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2015, 20:11 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
Для банковских реквизитов полезно сделать отдельную таблицу, т.к. эти реквизиты предсказуемы и их список со временем не меняется. Т.е. их тип и список заведома известны и статичны. А вот все остальное (зачастую неизвестное заранее или крайне редко употребляемое) следует упрятать в EAV. Добавление новых колонок на каждый чих - тупик. Надоело уже объяснять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 09:24 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
ТС, оцените объем ваших данных. Сколько БР занимают от общего объема одной записи? Планируется ли у вас аудит данных? К примеру, если БР - 90%, но наиболее интенсивно меняются оставшиеся 10%. То какой смысл каждый раз в архив записывать 90% "статики"? Логичней в таком варианте статику вынести в отдельную таблицу, пусть и с соотношением 1-1, но на статику вести свой архив (параметризируя каждую версию БР в архиве интервалом актуальности для версий основной записи MinVersion/MaxVersion). Можно поработать в направлении аудита только измененных параметров в "цельной" таблице - но имхо, это головная боль. Т.о. при большой интенсивности изменения данных, при большом объеме справочника контрагентов - вы можете при декомпозиции таблицы получить существенный профит по месту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 10:31 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
LSVДля банковских реквизитов полезно сделать отдельную таблицу, т.к. эти реквизиты предсказуемы и их список со временем не меняется. Т.е. их тип и список заведома известны и статичны. А вот все остальное (зачастую неизвестное заранее или крайне редко употребляемое) следует упрятать в EAV. Добавление новых колонок на каждый чих - тупик. Надоело уже объяснять. заипетесь в аналитических задачах с EAV работать. Реляционка и стиральные машины машины не зря существуют, ну а кто-то впаривает EAV и Ретону ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 19:14 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
babona, Полностью согласен. И быстродействие будет храмать при больших объёмах данных. Даже если индексы будут грамотно построены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2015, 22:09 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
babonaзаипетесь в аналитических задачах с EAV работать. Реляционка и стиральные машины машины не зря существуют, ну а кто-то впаривает EAV и РетонуПредлагаешь на каждый минисправочник клепать отдельную табличку ? Что ты вообще предлагаешь ? зы: исходим из предположения, что новые атрибуты создают непрограммисты (обычно аналитики). Подразумеваем задачу типа интернет-магазина, куда время от времени поступают новые группы товаров и к ним нужно отобразить новые фильтры для поиска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 09:38 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
LSV, ну зачем из крайности в крайность. все lookup-таблицы складываем в одну таблицу, включая туда категорию лукапа и пару полей прозапас для TAG-овых значений и покрываем индексом с include. Почитайте внимательно в Википедии в каких бизнес-областях истоки EAV. И там это оправдано, но и то надо сказать, что для стат.-аналитической обработки потом EAV разматывают в денормализованные датасеты. Одна из проблем в том, что разработчиков OLTP- мало волнуют потребности DWH/BI - щиков, DWH/BI - тоже в свою очередь мало отвечают за аналитические выкладки, а больше работаю по принципу - сгрести в кучу, чем больше терабайтов/кубов - тем лучше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2015, 20:11 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
ну зачем из крайности в крайность.Это не крайности, а будни любой долгоживущей, эволюционирующей системы. все lookup-таблицы складываем в одну таблицу, включая туда категорию лукапа и пару полей прозапас для TAG-овых значений БУГАГА... Ценный совет. Пеши исчо. :) Хранить lookup-таблицы недостаточно. Нужно еще где-то хранить ссылки на них. Причем каждый день могут появляться новые ссылки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2015, 09:23 |
|
||
|
Разбитие таблицы с большим ко-вом атрибутов(?)
|
|||
|---|---|---|---|
|
#18+
LSV, "Универсальный справочник" и ЕАV - это вообще-то разные паттерны для разных целей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2015, 09:48 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38967122&tid=1540538]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 274ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...