powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / архитектура БД - параметры в одну таблицу или в разные?
13 сообщений из 13, страница 1 из 1
архитектура БД - параметры в одну таблицу или в разные?
    #32723710
HankStamper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Такой вопрос об архитектуре бд:
Есть таблица некоторых объектов ObjectTable.
Объекту соответсвует некоторые разносмысловые группы параметров, например M={M1,M2,M3,M4}, N={N1,N2,N3}, P={P1,P2,P3,P4,P5}.

Вариант первый - всё свести в одну таблицу c колонками:
ObjectTable:
ObjectID (PK),ObjectName,M1,M2,M3,M4,N1,N2,N3,P1,P2,P3,P4,P5

Вариант второй - разнести параметры в разные таблицы
ObjectTable:
ObjectID (PK),ObjectName

M_ParamTable:
ObjectID (FK на ObjectTable.ObjectID)+(UniqueKey),M1,M2,M3,M4

N_ParamTable:
ObjectID (FK на ObjectTable.ObjectID)+(UniqueKey),N1,N2,N3

P_ParamTable:
ObjectID (FK на ObjectTable.ObjectID)+(UniqueKey),P1,P2,P3,P4,P5

Мне кажется, что надо всё сливать в одну таблицу, но увидел некую базу, где часть параметров вынесена в отдельную таблицу и вот задумался.

Как нужно правильно делать?

Если вопрос очень ламерский - то напишите, пожалуйста, литературу, где этот вопрос объясняется.

Спасибо.
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32723751
Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос здесь поднимался неоднократно и последний раз буквально пару дней назад .

Andrey
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32723766
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все в одну таблицу, но не по вашему варианту :)

Вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
ParamType  --список параметров (1,'N1'; 2,'N2', 3,'M1' и т.д.) 
ID, Name

ObjectParamValue:  --значения параметров объекта 
ParamTypeID, ObjectID, Value


Тогда у вас не будет проблем с добавлением новых параметров.

-- Tygra's --
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32723855
HankStamper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey - этот топик я прочёл, прежде чем запостить этот вопрос - у меня другой вопрос.

tygra - в моём случае твой вариант не подходит совсем, так как у меня список параметров постоянный.

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

вобщем, я подумал и решил , что ту базу что я видел - это чей-то глюк и надо сливать всё в одну таблицу.
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32724046
Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абстрактные вопросы:
Интересно, почему все считают, что их постановка задачи самая последняя и наиболее верная?
Почему никто и никогда не думает о возможных рассширениях, добавлениях и изменениях?
Почему многие считают опыт других просто "глюком" ... и зачем тогда просят советов здесь?

Andrey
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32725088
Sergey_SK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to tygra and all кто знает
Код: plaintext
1.
2.
ObjectParamValue:  --значения параметров объекта 
ParamTypeID, ObjectID, Value
Value какой тип предполагается - sql_variant?
что-т ни как определиться не могу, как при такой организации поступить с параметрами с дес. точкой. типа decimal(8.2) ?
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32725913
Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_SKValue какой тип предполагается - sql_variant?
что-т ни как определиться не могу, как при такой организации поступить с параметрами с дес. точкой. типа decimal(8.2) ?

Как один из вариантов использовать для поля Value тип VARCHAR. Мы как раз его использовали для хранения данных разного типа ...
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32726043
Sergey_SK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey
...использовать для поля Value тип VARCHAR.
Мы как раз его использовали для хранения данных разного типа ...

И что, при каждом обращение делаете приведение типов?

Для хранения данных разного типа я склоняюсь использовать разные таблицы,
вот только с decimal не знаю как поступать?
Использовать float, до этого старался ни кагда его не использовать из за частого вываливанея у клиентов в експоненциальный вид, да и ещё пишут что при вычислениях "точность вычислений оставляет желать лучшего" что в свое время я перевёл как "за результат мы не отвечаем" и пользовал всегда decimal.
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32726313
Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_SK
И что, при каждом обращение делаете приведение типов?


Делаем ... при необходимости. В зависимости от размера это не так уж дорого стоит. И это самый удобный способ хранения однотипного рода данных. Кстати не только упомянутые вами, но том числе и дат...
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32727073
Sergey_SK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Andrey
У вас хранимые процедуры и функии это 99% динамический sql ?
Если, например, для дат отвести свою таблицу то и приведение типов
делать будет незачем, количество динамического sql вероятно уменьшится?
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32727611
Николай МВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я такой вариант использую:

ParamType_ID, Object_ID, Prm_Str, Prm_Date, Prm_Int, Prm_Float, ...

Но, в таблице объектов,

Object_ID, Prm1, Prm2, Prm3.
Несколько наиболее часто используемых параметров: Tag, Memo, Name,

Мне очень удобно и проблем нет вообще, а там уже Вам решать.
Универсально, но без фанатизма.
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32727848
Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_SKto Andrey
У вас хранимые процедуры и функии это 99% динамический sql ?
Если, например, для дат отвести свою таблицу то и приведение типов
делать будет незачем, количество динамического sql вероятно уменьшится?
Я извиняюсь, но никаким динамическим sql и не пахнет. Зачем он!? Если надо производить вычисления по этим полям, то просто cast'ом пользуемся и все. Но как правило подобные структуры используются для хранения различного вида настроек и особых преобразований не требуют вообще.

А как Вы представляете запрос где нужно вывести, к примеру, все данные из таблицы и где сами значения хранятся в дополнительных таблицах, соответствующих своему типу? Вы думаете что это будет гораздо оптимальнее?
...
Рейтинг: 0 / 0
архитектура БД - параметры в одну таблицу или в разные?
    #32728115
Sergey_SK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey
Но как правило подобные структуры используются для хранения различного вида настроек и особых преобразований не требуют вообще.


Различного рода настроек это не совсем то, вот организовать таким образом хранение параметров обектов.

Andrey
...использовать для поля Value тип VARCHAR.


В вашем случае конечно же получить список всех параметров и их значений проще. А вот как проводит вычисления, бизнеслогику, там отчёты всяки разны строить...
Если хранить разные типы параметров в разных таблицах то тут всё в порядке и контроль типов к тому же будет.

Andrey
А как Вы представляете запрос где нужно вывести, к примеру, все данные из таблицы и где сами значения хранятся в дополнительных таблицах, соответствующих своему типу? Вы думаете что это будет гораздо оптимальнее?


Вот в этом случае и делать приведение типов, всех к типу VARCHAR,
и обединять union. Конечно если нужно все и сразу.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / архитектура БД - параметры в одну таблицу или в разные?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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