powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение сущности и ее свойств
30 сообщений из 30, показаны все 2 страниц
Хранение сущности и ее свойств
    #36427338
dukalis36
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.
При разработке схемы возник такой вопрос. В системе будет некая сущность (Объект), в зависимости от ее типа к ней могут быть привязаны различные свойства. Например, тип объекта - Горшок цветочный серии ааа, свойства - масса (дробное число), цвет (строка), цена (целое число); тип объекта - книга, свойства - год издания (дата), цена (целое число), автор (строка), число страниц (целое число), название (строка)
Соответственно появляются сущности Тип Объекта (динамически заполняется), Свойства (динамически заполняются) и Объект (*-1 к типу и *-* к свойствам). Не пойму, как лучше хранить значения этих свойств? Сделать таблицу по принципу Id св-ва, Id объекта, значение (строка) или же разбить эту таблицу на несколько по типу данных? т.е. Id св-ва, Id объекта, значение (строка) + Id св-ва, Id объекта, значение (дата) + Id св-ва, Id объекта, значение (дробное число) и т.п.
Типы данных являются статическими, т.е. админ не сможет добавлять новые типы, к примеру дробное с 1 знаком до и с 5 знаками после запятой.
Заранее спасибо за ответы.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427415
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dukalis36,

Я уже встречался с подобной задачей, когда свойства и их типы заведомо не определены, а их определение является динамическим, то есть в ходе добавления или редактирования некоторой сущности в БД. В данном случае лучшим подходом будет сделать как Вы уже и описали: это создание справочника свойств (длина, ширина, масса, напряжение, цвет и т. д.) и справочника типов. Также будет таблица сущности в которой будут присутствовать ссылки на эти два справочника (таблицы).
Ясно, что в этом случае отношение сущность-справочник свойств будет определено как многие ко многим. В простом случае справочник типов будет связан с справочником свойств отношением один ко многим.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427431
dukalis36
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Но я все равно не понял, что лучше
авторНе пойму, как лучше хранить значения этих свойств? Сделать таблицу по принципу Id св-ва, Id объекта, значение (строка) или же разбить эту таблицу на несколько по типу данных? т.е. Id св-ва, Id объекта, значение (строка) + Id св-ва, Id объекта, значение (дата) + Id св-ва, Id объекта, значение (дробное число) и т.п.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427497
dukalis36,
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427543
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dukalis36Спасибо. Но я все равно не понял, что лучше
авторНе пойму, как лучше хранить значения этих свойств? Сделать таблицу по принципу Id св-ва, Id объекта, значение (строка) или же разбить эту таблицу на несколько по типу данных? т.е. Id св-ва, Id объекта, значение (строка) + Id св-ва, Id объекта, значение (дата) + Id св-ва, Id объекта, значение (дробное число) и т.п.
Думаю что лучше хранить значение в виде строки, поскольку любой тип можно преобразовать в строку и обратно. Создание связанной таблицы для каждого типа плохой вариант, поскольку типы заранее не определены, а создавать такие таблицы динамически это не самый лучший выбор, поскольку возможна ситуация, при которой будет создаваться большое количество типов для хранения свойств, для некоторых их которых будет мало значений. А создавать сто таблиц для хранение нескольких записей в каждой конкретно для это случая это точно не правильно. Храните как строку nvarchar(max)
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427559
rsolanov,

Это какие же типы не определены? какие 100 таблиц?
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427578
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джамшид Ровшанrsolanov,

Это какие же типы не определены? какие 100 таблиц?
То, что типов не так и много я согласен, а как выходить из ситуации с
NUMERIC например? NUMERIC(14, 2); NUMERIC(18, 4); NUMERIC(18, 0) ну и так далее.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427580
dukalis36
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Будем считать, что типы значений свойств заранее определены. Скажем: целое, дробное, дата, строка. Какие будут аргументы за предложенные варианты?
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427585
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dukalis36Будем считать, что типы значений свойств заранее определены. Скажем: целое, дробное, дата, строка. Какие будут аргументы за предложенные варианты?
А что значит дробное позвольте узнать?
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427601
Vika Vinner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanovА что значит дробное позвольте узнать?

это сделанное из дроби - мелконакатанных металлических шариков...
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427646
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чую пахнет очередным EAV
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427740
rsolanov,
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427741
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427754
dukalis36
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rsolanovДжамшид Ровшанrsolanov,

Это какие же типы не определены? какие 100 таблиц?
То, что типов не так и много я согласен, а как выходить из ситуации с
NUMERIC например? NUMERIC(14, 2); NUMERIC(18, 4); NUMERIC(18, 0) ну и так далее.
Никак. Будет только NUMERIC(9,2). В этой задаче это будет единственное "дробное".
авторЧую пахнет очередным EAV Пованивает с самого начала)) Вопрос-то не в этом, а в том, хранить ли Value в одной таблице или в нескольких.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427774
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторdukalis36rsolanov[quot Джамшид Ровшан]rsolanov,

Это какие же типы не определены? какие 100 таблиц?
То, что типов не так и много я согласен, а как выходить из ситуации с
NUMERIC например? NUMERIC(14, 2); NUMERIC(18, 4); NUMERIC(18, 0) ну и так далее.
Никак. Будет только NUMERIC(9,2). В этой задаче это будет единственное "дробное".

Понадеяться на то, что для этого типа точность и масштаб никогда не будут изменяться - это означает вбить в систему большой гвоздь. Практика показывает, что очень часто, даже на этапе проектирования ИС требования к ней часто изменяются. Например, хранить деньги в типе NUMERIC(9,2) я точно не советую, уже очень скоро Вы увидите что этого Вам не хватает. Если Вы до сих пор сомневаетесь, то завтра все по вылезут из своих берлог и у Вас будет больше постов для обдумывания этого вопроса. Я голосую за строку, а Джамшид Ровшан как я понял, предпочитает разбавить это по разным таблицам.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427776
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dukalis36авторЧую пахнет очередным EAV Пованивает с самого начала)) Вопрос-то не в этом, а в том, хранить ли Value в одной таблице или в нескольких.Как-же это так "вопрос не в этом"? В нем, родимом. :)
Извините, если невнимательно прочитал тему, но Вы собираетесь "раскидать" EAV по нескольким таблям или как?
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427777
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джамшид Ровшан, я вижу Вы в неописуемом восторге. :) Помогите топикстартеру
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427779
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427835
rsolanov,

ПРи чем тут восторг? Есть задача, есть решение.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427877
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джамшид Ровшан == Сахават Юсифов (забанненый который).

Возможно опять ошибаюсь, но уж это точно он. С картинками своих супер-пупер программулин, суть поток сознания.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36427909
Senya_L,

вроде на той каринке все как в скл менеджмент студио, почему поток чего то , который ты не уразумел?
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36428101
DrMorphine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Один из возможных вариантов (несколько специфический, но всё же) - типы объектов хранить справочником, а свойства и их значения - в BLOB в формате XML.
Что-нибудь вроде
<property><type>integer</type><value>123</value></property>

При такой схеме в свойства можно запихать всё что угодно. Если появляется новая сущность со специфическими свойствами, то схема БД не меняется.
Но запросы писать по свойствам будет проблематично.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36428832
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanovТо, что типов не так и много я согласен, а как выходить из ситуации с
NUMERIC например? NUMERIC(14, 2); NUMERIC(18, 4); NUMERIC(18, 0) ну и так далее.
Рулить надо от пользовательских типов (доменов), а не от всех вариантов базовых типов сервера.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36428909
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей ВаскецовrsolanovТо, что типов не так и много я согласен, а как выходить из ситуации с
NUMERIC например? NUMERIC(14, 2); NUMERIC(18, 4); NUMERIC(18, 0) ну и так далее.
Рулить надо от пользовательских типов (доменов), а не от всех вариантов базовых типов сервера.
Хорошо и как Вы предлагаете решить эту задачу?
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36428951
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про свойства EAV уже не раз перетирали на форуме.
XML неплохой вариант, когда СУБД поддерживает SQL запросы по XML объектам.

Попробуйте назвать сущность "Объект" както более определённо - в терминах прикладной области. Возможно это поможет вам точнее сформулировать задачу.

Можно изменить подход к классификации.

Например вместо типа "Горшок цветочный серии ааа", определить тип - "ёмкость", а назначение и серию ёмкости вынести в атрибуты. Для книги - носитель информации и т.п. Тогда у вас образуется ограниченный набор типов которые будут подходить для храния описаний любых товаров.

Задача не простая, но в итоге вы получите систему ориентированную на решение прикладных задач пользователя, а не Lego пазл. Сейчас вы по сути предлагаете пользователю БД написать её структуру. Но надо помнить, что пользователь не специалист в области проектирования БД и ему нужны готовые решения. Пользователь скорее всего создаст плохую структуру БД и скажет, что ваша система плохая.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36428962
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanovХорошо и как Вы предлагаете решить эту задачу?
Как и любую другую, где на "объект" навешивается куча свойств.
Просто, как мне показалось, проблема была именно с пониманием, что такое "объект".
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36429173
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей ВаскецовrsolanovХорошо и как Вы предлагаете решить эту задачу?
Как и любую другую, где на "объект" навешивается куча свойств.
Просто, как мне показалось, проблема была именно с пониманием, что такое "объект".
Вы не могли бы по конкретнее выразить свою идею как хранить значения свойств разных типов. В плане обмена опытом :)
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36429251
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanov Посмотрите тут
+1
можно ещё погуглить по модель Тенцера

Шайтан
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36429356
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanovкак хранить значения свойств разных типов
Идея не моя. В разных полях - как раз ваш случай.
...
Рейтинг: 0 / 0
Хранение сущности и ее свойств
    #36430761
dukalis36
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ссылки, правда и EAV и "модель Тенцера" я читал. Вообще не знал, что это называется "модель Тенцера", вроде раньше это называлось что-то типа "вертикальное хранение атрибутов" (может путаю). Как я понял, модель Тенцера больше годится для систем с частым изменением требований, ее минус в сложных запросах и меньшем быстродействии. Если я неправ, поправьте, пожалуйста.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение сущности и ее свойств
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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