|
Схема данных (теория)
|
|||
---|---|---|---|
#18+
Есть довольно старенький проект, в котором интересно реализован функционал. Сама база на Pervasive, но тут наверное это и не имеет значения. Суть в том, что параллельно со стандартной схемой таблиц реализована собственная прослойка. То есть грубо говоря добавлена пара таблиц - "Tables", "Fields". Ну и есть мастер, который по этим таблицам генерит реальную таблицу. Например, если пользователь захотел текстовое поле "Статус" длиной 500 и по умолчанию "пусто", то при сохранении будет сгенерирован код "alter table bla-bla"... В принципе прикольно, учитывая что потом эти поля еще и печатать можно (диниамический запрос). Вопрос в том, насколько в век ORM и прочих приблуд такой подход себя оправдывает? Есть ли какие-то более разумные (более совершенные) варианты? Или также и продолжать копировать существующее решение? Есть ли какая-то возможность дело это напрямую в схему (хотя бы напрмер на примере MS SQL)? Большое спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 13:58 |
|
Схема данных (теория)
|
|||
---|---|---|---|
#18+
bzumsВопрос в том, насколько в век ORM и прочих приблуд такой подход себя оправдывает? Это и есть типичный ORM. Альтернативой может быть EAV. Если осилишь его стиль построения запросов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:24 |
|
Схема данных (теория)
|
|||
---|---|---|---|
#18+
bzumsВопрос в том, насколько в век ORM и прочих приблуд такой подход себя оправдывает? ну, "100 лет" уже такое есть, в системах со всякими СУБД (например, CRM), и в основном это какие-то дополнительные специфические столбцы, в которых содержится опять же специфическая для данного бизнеса информация. Но поскольку эти столбцы всегда вторичны, особого влияния они не оказывают. Разве что всякие гриды и отчеты приходится строить динамически. Ну и запросы, соответственно, для добавления этих столбцов. EAV, как тут уже упомянули, это несолько другое, там боле заковыристые запросы. Это, например, типа нынешняя 1С, если я не ошибаюсь. p.s. вообще, для "просто юзеров" в случае сбоев система дико хреновая, т.к. на протяжении неясного отрезка времени структуры таблиц меняются непредсказуемо. Ну и для "сервисного" обновления таких баз это тоже гемор, т.к. нужно учитывать изменения пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 16:03 |
|
Схема данных (теория)
|
|||
---|---|---|---|
#18+
EAV, как тут уже упомянули, это несколько другое, там боле заковыристые запросы. Это, например, типа нынешняя 1С, если я не ошибаюсь.Нет. 1С самая обычная инф.система. Там точно также добавляются поля в физические таблицы. Хотя механизмы ЕАВ там тоже можно настроить. па сабжу: стартовый вопрос непонятен. Что в результате хотите получить ? Сделать собственный инструмент быстрого изменения схемы данных ? Мы писали скрипты миграции: переименовка старой таблицы, создание новой, перенос в нее данных (в т.ч. и в другие таблицы), удаление старой таблицы и переименовка новой в старую. Подход трудоемкий, старый, но надежный и методологически понятный. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:47 |
|
Схема данных (теория)
|
|||
---|---|---|---|
#18+
EAV если туда идёт "информация участвующая в бизнес-логике" а не просто хранящаяся\извлекаемая по ключу EA, отличный способ свести к нулю все преимущества РСУБД ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:57 |
|
Схема данных (теория)
|
|||
---|---|---|---|
#18+
Вопрос был о том, есть ли какое-то более гибкое решение. Существующий вариант сделан очень давно. И работает. Но вот поменялось ядро базы данных и надо все эти наработки переводить. Было бы неплохо в самой системной таблице / схеме что-то менять. Типа добавил к описанию колонок свое поле "ОдобреноЛичноАдмином" и фигаришь туда Да/Нет :-) Так не бывает. Будем в том же ключе делать, стало быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 17:48 |
|
|
start [/forum/topic.php?fid=58&gotonew=1&tid=2036780]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
32ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
109ms |
get tp. blocked users: |
2ms |
others: | 276ms |
total: | 493ms |
0 / 0 |