Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / 60 справочников по 3 строки или один на 200 / 25 сообщений из 51, страница 1 из 3
17.11.2020, 12:26
    #40019348
Шамиль Фаридович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
У нас заведена практика на каждое поле выбора заводить отдельный справочник, соответствующий энаму на бэке.
У одной и той же сущности может быть несколько полей для статуса - статус анкетирования, статус аттестации и т.д.
И для каждого такого статуса - отдельная таблица-справочник.
Большая часть этих справочников вообще никогда не используется, но они помогают быстро сопоставить базу и фронт при возникновении каких-либо проблем.

Но вот заказчик просит завести 1 справочник примерно такого вида
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE [Statuses] (
Id
EntityTypeId
Kind
Name)



Куда собирается класть разные статусы разных сущностей. Слабая аргументация "пусть пока так будет" меня в восторг не приводит.
Так как с базой работают много разработчиков, то наличие большого количества справочников препятствует лишней индексации таблиц. Мало у кого поднимется рука построить индекс по полю, где всего 3 разных значения (судя по связанному справочнику). Но вот по ссылке на справочник из 200 строк уже могут.
Какого-то отчета, где требовалось бы вывести все статусы для разных сущностей у нас нет, и вряд ли такое понадобится.

Но может я чего не вижу, и у большого справочника статусов есть свои плюсы?
...
Рейтинг: 0 / 0
17.11.2020, 14:11
    #40019424
Guf
Guf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Шамиль Фаридович,

У нас есть один проект, в котором разработчики бэка принципиально не делают enum-ы в БД. По этому для отчетов сделана одна большая таблица (такая какую хочет ваш заказчик), которую мы поддерживаем сами.
И есть другой проект, в котором несколько сотен маленьких таблиц.
Не испытываем ни каких проблем ни там, ни там. Удовольствий, в прочем, тоже нет.
...
Рейтинг: 0 / 0
17.11.2020, 15:00
    #40019477
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Шамиль Фаридович
Мало у кого поднимется рука построить индекс по полю, где всего 3 разных значения (судя по связанному справочнику). Но вот по ссылке на справочник из 200 строк уже могут.

А какая разница, даже если там не 200, а 200 тыс. значений, если в отдельно взятой таблице все равно будут встречаться только 3 из них.
...
Рейтинг: 0 / 0
17.11.2020, 18:07
    #40019611
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
внешние ключи как-то подвязывать собираетесь?
если нет, то в принципе пофиг
...
Рейтинг: 0 / 0
17.11.2020, 21:33
    #40019693
Шамиль Фаридович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
andreymx,
Да, внешние ключи в любом случае будут, 99% все ФК будут некаскадными.
...
Рейтинг: 0 / 0
17.11.2020, 22:47
    #40019719
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Шамиль Фаридович
andreymx,
Да, внешние ключи в любом случае будут, 99% все ФК будут некаскадными.
цвет: громкий
звук: твердый
твердость: голубой

зато все параметры в справочнике :)
...
Рейтинг: 0 / 0
18.11.2020, 09:41
    #40019819
Шамиль Фаридович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
andreymx,
Узнал аргумент автора идеи с большим справочником:
увеличивается скорость разработки вроде как за счет уменьшения количества энамов.
А вот лид с бека говорит, что это небольшое ускорение с лихвой компенсируется сложностью поддержки этого большого энама, ибо сами разработчики иногда путают EntityType. И да, твердый цвет уже встречался.
...
Рейтинг: 0 / 0
18.11.2020, 10:34
    #40019830
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
на один справочник проще сделать общее приложение
чем лепить 200

хотя если они однотипные, то нормальному разрабу не сильно сложнее сделать общую форму для всех 200
...
Рейтинг: 0 / 0
18.11.2020, 10:42
    #40019834
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Шамиль Фаридович
ибо сами разработчики иногда путают EntityType
можно и название справочника спутать...
Для 200 отдельных предлагаю сделать сквозной сиквенс, и FK
тогда точно ничего не перепутается
...
Рейтинг: 0 / 0
18.11.2020, 12:44
    #40019886
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
andreymx
Для 200 отдельных предлагаю сделать сквозной сиквенс, и FK
тогда точно ничего не перепутается

А зачем сквозной сиквенс? Ведь каждый FK будет на свою таблицу-справочник.
...
Рейтинг: 0 / 0
18.11.2020, 12:52
    #40019892
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Шамиль Фаридович
andreymx,
Узнал аргумент автора идеи с большим справочником:
увеличивается скорость разработки вроде как за счет уменьшения количества энамов.
А вот лид с бека говорит, что это небольшое ускорение с лихвой компенсируется сложностью поддержки этого большого энама, ибо сами разработчики иногда путают EntityType. И да, твердый цвет уже встречался.

В случае стправочников в БД у них на беке enum-ов вообще быть не должно. Или же они собираются при каждом изменении справочника в БД вносить изменения в код и все пересобирать.
...
Рейтинг: 0 / 0
18.11.2020, 14:15
    #40019933
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Шамиль Фаридович,

вам же потом каждый раз придется разворачивать эту таблицу...

в один момент количество записей в такой структуре станет довольно велико и расходы на разворачивание повысятся,

затем последует отказ от такого вида хранения и переделка всего, что наколбасили за это время - а это будут существенные расходы
...
Рейтинг: 0 / 0
18.11.2020, 17:51
    #40020063
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Обсуждалось в проектировании.
Аргумент ЗА только один - это круто, модно, молодежно. Я художник, я так вижу.
Остальная экономиня - натягивание совы на глобус.
Поскольку это вопрос ВЕРЫ - переубедить рациональными аргументами невозможно.

Аргументы против - права на все справочники будут одинаковыми,
вместо N таблиц-справочников легко появляются N вьюх (ибо выпадающие поля надо делать)
Сложнее добавить поле в отдельный справочник, (не влезает в прокрустово ложе универсала)
твердый цвет уже упомянуто.
...
Рейтинг: 0 / 0
18.11.2020, 19:23
    #40020095
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
SERG1257,

Права можно реализовать с помощью безопасности на уровне строк. Это конечно добавит новые тормоза, но вполне возможно так сделать.
...
Рейтинг: 0 / 0
18.11.2020, 19:27
    #40020096
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Шамиль Фаридович,

авторId
EntityTypeId
Kind
Name

Должно быть два справочника для такой задачи:
EntityType (ID, description, Enabled, SoOn)
EntityTypeKind (EntityTypeID, ID, Name, SoOn)
...
Рейтинг: 0 / 0
18.11.2020, 19:51
    #40020102
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Шамиль Фаридович,

щас модно всю справочно-конфигурацию в одном json файле хранить. и что такое справочник? чем он отличается он не справочника? список сотрудников это справочник? а список проектов над какими они работают тоже? и чем список статусов отличается в этом плане? есть только сущности (entity) и отношения между ними (association) и ничего более.
...
Рейтинг: 0 / 0
18.11.2020, 20:21
    #40020120
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Relic Hunter
и что такое справочник?

Под "справочником" обычно подразумевают таблицу, единственная цель которой это просто перечисление допустимых значений какого-либо поля из другой таблицы.
...
Рейтинг: 0 / 0
18.11.2020, 21:49
    #40020138
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
нет.
fkthat
Relic Hunter
и что такое справочник?

Под "справочником" обычно подразумевают таблицу, единственная цель которой это просто перечисление допустимых значений какого-либо поля из другой таблицы.
...
Рейтинг: 0 / 0
18.11.2020, 22:19
    #40020149
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
не совсем понятно, почему уперлись в "одну большую таблицу". Что мешает сделать несколько "средних"? :) Разбивая по типам, содержимому и необходимостям.

А вот это: "Большая часть этих справочников вообще никогда не используется" -настораживает, обычно означает, что проектирование хромает. Ибо: "не стоит плодить сущности сверх необходимого" :)
...
Рейтинг: 0 / 0
18.11.2020, 23:28
    #40020162
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Критик
Права можно реализовать с помощью безопасности на уровне строк. Это конечно добавит новые тормоза, но вполне возможно так сделать.
Можно всё, конечно, но в итоге получается, что разработчики будут писать то, что уже написано, будут строить свои таблицы над таблицами СУБД, свои типы данных на базовых типах СУБД, свою систему прав и т.д.
Нет никаких сомнений, что они это сделают глючнее, тормознутее, чем специалисты вендоров СУБД, работать с этим будет сложнее, что на это нельзя будет найти специалиста, и главное, зачем тратить деньги на то, что уже есть? Расходы будут такими, что топовые версии Оракл с Сиквелом покажутся практически бесплатными.
...
Рейтинг: 0 / 0
19.11.2020, 01:11
    #40020179
Шамиль Фаридович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
fkthat
Relic Hunter
и что такое справочник?

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

Именно так. Причем чаще всего справочник очень статичен.
SERG1257Поскольку это вопрос ВЕРЫ - переубедить рациональными аргументами невозможно.
Вот это уже печально.

Вообще за 2 дня не увидел ни одного довода за большой справочник.
Зато кучу советов, как его лучше реализовать, в том числе и для бэка. Там крутые ребята, не беспокойтесь:)
...
Рейтинг: 0 / 0
19.11.2020, 01:19
    #40020184
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Довод "за" только один - если запихнуть в одну таблицу все справочники, то проект в SSDT не будет тормозить )

ps если в проекте десятки тысяч объектов, то он валидируется весьма неспешно,
но даже это не стоит тех трудностей, которые вы себе обеспечите применением EAV-модели - вот представьте, что вам нужно выпилить из системы какой-нибудь функционал, тогда вам нужно будет не только удалять таблицы, но и выборочно избавляться от данных в подобном справочнике, короче, геморрой будет )
...
Рейтинг: 0 / 0
19.11.2020, 09:38
    #40020226
Ares_ekb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Relic Hunter
список сотрудников это справочник? а список проектов над какими они работают тоже?
Их иногда называют мастер-данными. С одной стороны, они похожи на справочники тем, что на них много ссылок из других данных, тем, что их нужно унифицировать и гармонизировать. С другой стороны, они похожи на транзакционные данные частотой изменений и относительно сложной структурой.

Если по теме, то иногда проще не париться. Ну, хочет заказчик сделать так, ты привел доводы, что лучше делать иначе. Он не согласился. Значит либо доводы были недостаточными и в следующий раз нужно быть более убедительным. Либо заказчик СЗБ, его предупредили о проблемах, он принял на себя эту ответственность. Или может ты чего-то не знаешь, может у них сто других проектов уже сделаны по этой схеме и им так действительно проще.

Если весь проект такой, что каждую фигню нужно с кем-то согласовывать, всё делается плохо и сложно, и это годами не меняется, то проще сменить работу. Я реально сталкивался с проектами, где какой-то школьник на архитекторе спроектировал и базу данных, и пользовательский интерфейс. И заказчик спрашивает почему целых 2 недели заложено на реализацию модуля, мы же вам всё уже расписали, посадите программиста, он за пару дней всё сделает.
...
Рейтинг: 0 / 0
19.11.2020, 09:42
    #40020229
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Шамиль Фаридович,

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

PS. Вот я сейчас работаю с базой, где, чтобы вытащить значение, нужно пройти через 8 немаленьких таблиц, причем, весьма нетривиальным способом и ломаю голову, как бы это все ускорить. Периодически вспоминая разработчиков тихим ласковым словом :)
...
Рейтинг: 0 / 0
19.11.2020, 11:25
    #40020284
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
60 справочников по 3 строки или один на 200
Доводы в пользу 1-го большого справочника:

1. Для создания нового справочника нужно всего лишь вставить неск. записей. Не нужны права на создание таблицы .
2. Удаление лишних справочников - см. п.1.
3. Список таблиц в проекте будет кратким, а не с многими сотнями микротаблиц.
4. Вычитку нужного значения из "единого" справочника можно сделать простым одинаковым подзапросом или одной функцией.
5. Единый и простой гуи-интерфейс.

На избитый вопрос "а как же ссылочная целостность ?" встречный вопрос "Вам известна хоть одна известная ERP-система, где СЦ уровня СУБД используется ?"

Недостатки:
1. Сложно делать справочники, если они неодинаковые по структуре, н-р с дополнительными ссылками или инф. полями. Хотя эта проблема частично решается тем же EAV.
2. Безопасность ниже, чем в случае отдельных таблиц. Хотя и тут можно применить ряд мер, усложняющих несанкц. доступ.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / 60 справочников по 3 строки или один на 200 / 25 сообщений из 51, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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