|
|
|
Вопрос по модели данных
|
|||
|---|---|---|---|
|
#18+
Есть задача по учету всех работ выполняемых на объекте. Есть справочник работ, каждая работа характеризируется набором общих и своих специфичных параметров. Общие параметры выполняемых работ хранятся в общей таблице, для специфических параметров созданы для каждого типа работ свои таблицы. Схема довольно громоздкая и плохо масштабируемая, когда нужно добавлять работы, или изменять параметры существующих работ. Если сталкивались с такой задачей, как ее решали в плане модели данных (практически все специфические параметры используются в отчетности и при поиске)? Может лучше в одной таблице держать XML со специфическими параметрами, насколько пробленое такое решение, как в таком случае будет со скоростью? Спасибо. Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2010, 15:36 |
|
||
|
Вопрос по модели данных
|
|||
|---|---|---|---|
|
#18+
Yura PeregonЕсть задача по учету всех работ выполняемых на объекте. Есть справочник работ, каждая работа характеризируется набором общих и своих специфичных параметров. Общие параметры выполняемых работ хранятся в общей таблице, для специфических параметров созданы для каждого типа работ свои таблицы. Схема довольно громоздкая и плохо масштабируемая, когда нужно добавлять работы, или изменять параметры существующих работ. А более наглядно сформулировать задачу? Пока что, вариант такой: 1. таблица параметров ID параметра (PK) описание параметра? 2. таблица шаблонов работ ID шаблона ID параметра (FK) 3. таблица работ ID работы (PK) ID шаблона (FK) (если нужен) ID параметра (FK) Нужен новый типа работ - добавляем шаблон. Нужна новая "стандартная" работа - копируем шаблон. "Не стандартная" - добавляем отдельные работы. Из минусов - повторение "общих" параметров для каждой работы. Пока нет понимания, что скрывается под "параметром" нет понимания на сколько это плохо. Из плюсов - нет сложностей с "новыми" задачами и когда "с этой работой не как обычно, а все совсем по другому" ps. Но повторюсь, это сферический конь в вакууме. а предсказательный шар, от жары сбоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2010, 16:20 |
|
||
|
Вопрос по модели данных
|
|||
|---|---|---|---|
|
#18+
Более наглядно Справочник работ IDработы Название ТаблицаПараметров 1 Прокладка кабеля T001 2 Настройка модема NULL для работы 2 нет доп параметров, для работы 1 доп параметры в табличке T001 Выполненые работы ID IDработы Дата 1 1 01/01/10 2 1 01/01/10 3 2 01/01/10 4 1 01/01/10 Т001 для даного случая ID МетражКабеля 1 10 2 15 4 20 Схема очень упрощена от того что есть, параметры в основном цифровые и строковые. Проблема в том что для каждого нового типа работ нужно проектировать табличку T... и добавлять в код обрабатывающий выполнение работ. Думаю в таблицу Выполненые работы добавить поле XML куда воткнуть все то что лежит в табличка T..., но к примеру строятся отчеты типа Использованый кабель за день, тоесть будет разбираться причем активно внутренности ХML ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2010, 16:39 |
|
||
|
Вопрос по модели данных
|
|||
|---|---|---|---|
|
#18+
Yura Peregon, все доп параметры по всем работам делаешь в одной таблице и делашь ссылку на работы. Фактически у тебя в нынешней структуре имя таблицы и есть ссылка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2010, 16:47 |
|
||
|
Вопрос по модели данных
|
|||
|---|---|---|---|
|
#18+
Тоесть фактически убить типизацию как таковую? А если понадобиться (в качестве параметра таблица, такое уже есть - сейчас это Т001Details) тогда как? Как по мне XML решает эти проблемы, но не появятся ли другие о которых я пока не подозреваю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2010, 16:58 |
|
||
|
Вопрос по модели данных
|
|||
|---|---|---|---|
|
#18+
Yura PeregonТоесть фактически убить типизацию как таковую? А если понадобиться (в качестве параметра таблица, такое уже есть - сейчас это Т001Details) тогда как? Как по мне XML решает эти проблемы, но не появятся ли другие о которых я пока не подозреваю? 1. Что вы подразумевате по типизацией? 2. Вы просили совет как правильно делать, я вам дал его. Естественно его реализация подразумевает переделку ПО. 3. "А если понадобиться (в качестве параметра таблица" а зачем? если вы переделаете и все доп параметры будут в одной таблице. Вы же как раз и хотите избавится от такой структуры и не будет у вас десятков таблиц.. :) Так и хочется сказать "Зачем делать просто если можно следать сложно" :) 4. Работа с XML в ещё тот геморой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2010, 17:24 |
|
||
|
Вопрос по модели данных
|
|||
|---|---|---|---|
|
#18+
Yura Peregon Схема довольно громоздкая и плохо масштабируемаяВ упор не вижу плохой масштабируемости: новый объект -> новая клиентская программа (надо же как то новые данные вводить, искать, отображать) -> новая база (с доп таблицами или полями). Неприятно только что вместо одной новой сущности - клиентской программы, добавляется ДВЕ - программа и база и стало быть ЧЕТЫРЕ возможных состояния. С другой стороны по статистике данные живут дольше программ. Yura Peregon Может лучше в одной таблице держать XML со специфическими параметрами, насколько пробленое такое решениеЕсли все специфические данные читаются/пишутся только вместе, одним большим массивом то смысл есть. Однако поиск по определенному полю - уже проблема. Оно конечно решается, но решается удвоением хранения, усложнением обработки и т.д. А если возникнет задача обработки типа у всех работ у которого метраж кабеля больше 50 установить в 50 то тут с XML совсем грустно. Есть еще EAV - то еще убожество с совершенно убитой производительностью авторТоесть фактически убить типизацию как таковую?Если сделать три поля (для даты, числа и строки) плюс ограничение, что заполнено должна быть только одно, то типизация останется. Но повторюсь EAV - зло. Yura Peregon А если понадобиться (в качестве параметра таблица, такое уже есть - сейчас это Т001Details) тогда как?Это надо что-то в консерватории править. Резюмирую - идея разделять мухи и котлеты не такая плохая, беды в большом количестве таблиц я не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2010, 04:41 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36764491&tid=1542607]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
95ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 402ms |

| 0 / 0 |
