Size: a a a

DBA - русскоговорящее сообщество

2021 June 08

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Тут ключевой момент -надо ли будет расширять состав этих ограничений во время работы системы, надо ли добавлять новые виды ограничений? Если да, то -дочерняя таблица, если нет - можно делать поля
источник

V

Vlad in DBA - русскоговорящее сообщество
Нужно сохранять дату изменения каждого ограничения. Получается таблица users: id, ..., likes_limit, likes_limit_updated_at, groups_limit, groups_limit_updated_at ... Придется вручную отслеживать...
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
А другой вариант как? Не вручную?
источник

V

Vlad in DBA - русскоговорящее сообщество
В дочерних таблицах оставить ORM-ке :)
источник

V

Vlad in DBA - русскоговорящее сообщество
Да и скорее всего, ограничения будут добавляться
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Ну а это как, не руками?
источник

V

Vlad in DBA - русскоговорящее сообщество
Автоматически. Но я тебя понял.

А вот если создавать дочерние
таблицы, то следует ориентироваться на поля (в рамках одной таблицы) или по таблице на каждое ограничение (как описал вначале)
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Лучше одну таблицу, наверное...
источник

V

Vlad in DBA - русскоговорящее сообщество
Понял, спасибо большое. Хорошего вечера
источник

АА

Андрей Агеев... in DBA - русскоговорящее сообщество
три таблицы (две сущности + связи)
источник

АА

Андрей Агеев... in DBA - русскоговорящее сообщество
sql_variant (SQL Server) anydata (Oracle)
если только числовые или битовые,
то можно не заморачиваться - 0 и 1 решают
источник

ДМ

Дмитрий Могилевцев... in DBA - русскоговорящее сообщество
Я бы оставил таблицу users и отдельно таблицу с ограничениями. Судя из описания вид второй таблицы получится такой:
id
user_id
ограничение
updated_at

Получается ты добавляешь на одного юзера несколько строк, где поле ограничение это like, limit и т.д. Удобно и легко можно расширять
источник

V

Vlad in DBA - русскоговорящее сообщество
Две сущности — имеешь ввиду users и limits?
источник

АА

Андрей Агеев... in DBA - русскоговорящее сообщество
да
источник

V

Vlad in DBA - русскоговорящее сообщество
Ограничение тогда — enum какой-то? Если там строго один из вариантов
источник

АА

Андрей Агеев... in DBA - русскоговорящее сообщество
когда понадобится переименовать like или limit (несколько раз), а потом построить отчет по ограничениям определенного типа либо добавить к сущности "ограничение" атрибут-другой и построить отчет по этим атрибутам, тут то все удобство и проявится.
источник

ДМ

Дмитрий Могилевцев... in DBA - русскоговорящее сообщество
Да, enum, как вариант. Зависит от проекта конечно) можно просто подвязываться к этому полю и выводить в цикле в шаблоне. Если появится новое ограничение - шаблон просто среагирует и сразу выведет. По мне так очень удобно
источник

V

Vlad in DBA - русскоговорящее сообщество
Согласен. Тоже рассматривал, но динамический тип в постгресе — что-то не уверен
источник

V

Vlad in DBA - русскоговорящее сообщество
enum в реляционках насколько знаю — не желателен. А что за шаблоны?
источник

АА

Андрей Агеев... in DBA - русскоговорящее сообщество
иногда для универсальной системы атрибутов просто используют два-три поля с разными типами
источник