powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / иерархия сущьностей
19 сообщений из 19, страница 1 из 1
иерархия сущьностей
    #33636585
vitabir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как правильно описать с помощью sql иерархию сущьностей:
экземпляры объекта образуют подмножества, обладающие сходными и различными свойствами и вступающие в различные связи. Например, объект устройство (родовая сущьность, суперкласс) в него входят категории компьютер, монитор, принтер часть характеристик которых совпадает например инвентарный номер, кабинет, а другая часть свойственна отдельно каждой категории например жесткий диск, разрешение экрана.
Создать одну таблицу со всеми атрибутами или отдельно для компьютера, монитора и т.д. будет не правильно. Как это можно сделать?
Использую MS Sql server express и Management Studio Express Edition CTP
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33636621
Фотография daw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это Вам в форум по Проектированию БД лучше. там такое не раз и не два уже
обсуждалось...


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33636736
Alexander_F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitabir
Создать одну таблицу со всеми атрибутами или отдельно для компьютера, монитора и т.д. будет не правильно.

Почему неправильно? Аргументируйте.

Возможен вариант, когда общие свойства хранятся в одной таблице, а индивидуальные в соответствующей каждому объекту таблице.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33636771
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitabirСоздать одну таблицу со всеми атрибутами или отдельно для компьютера, монитора и т.д. будет не правильно.
Именно так и надо сделать. Т.е. так как вы бы делали на любом языке программирования: один общий тип с вложенными подтипами причем уровней вложения м.б. много.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33636879
vitabir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если сделать одну сущьность, напрмер устройство и внести в нее все атрибуты категорий компьютер, монитор, принтер это скроет реальную внутреннюю структуру категорий (поле жесткий диск у монитора) много лишних полей для некоторых категорий. А если создать отдельные сущности монитор, принтер, компьютер то скроется факт наличия общих харетеристик (инвентарный номер и т.п.) В теории я знаю что надо объединить общие характеристики и разъединить различные, но как это реализовать на практике?
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33636961
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitabir В теории я знаю что надо объединить общие характеристики и разъединить различные, но как это реализовать на практике?
Если язык позволяет то введением пользовательских типов (а ля С или Oracle) если не позволяет то комментариями. Лишние поля не мешают - они ведь не будут заполняться (зависит от интерфейса).
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33636978
vitabir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мод vitabir В теории я знаю что надо объединить общие характеристики и разъединить различные, но как это реализовать на практике?
Если язык позволяет то введением пользовательских типов (а ля С или Oracle) если не позволяет то комментариями. Лишние поля не мешают - они ведь не будут заполняться (зависит от интерфейса).

использую SQL
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637049
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitabirиспользую SQL
В SQL оракла есть типы. У других не знаю. В крайнем случае - комментарии.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637098
Alexander_F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможны 2 варианта:
1) Сделать для каждой категории свою отдельную таблицу, но общие поля во всех категориях назвать одинаково. Если конечно количество общих полей заранее известно. Здесь возникает проблема, когда нужно изменить количество общих полей - нужно лезть во все таблицы.

2) Существует таблица, содержащая общие характеристики. Плюс в этой таблице есть 2 поля: одно указывает тип объекта, на основании которого можно обращаться к таблице, в которой содержатся уникальные свойства соответствующего объекта; второе поле содержит ключ объекта в соответствующей таблице.

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

Других вариантов просто нет.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637156
_spy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_F2) Существует таблица, содержащая общие характеристики. Плюс в этой таблице есть 2 поля: одно указывает тип объекта, на основании которого можно обращаться к таблице, в которой содержатся уникальные свойства соответствующего объекта; второе поле содержит ключ объекта в соответствующей таблице.
И как так организовать ссылочность? Второе поле будет внешним ключем сразу ко всем таблицам объектов?
Не лучше ли сделать главной таблицу общих характеристик и набор таблиц для каждого объекта, которые будет детальными для таблицы общих характеристик?
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637178
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_FДругих вариантов просто нет.
одна сущность=одна таблица
остальное от лукавого
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637227
PridobreY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitabirЕсли сделать одну сущьность, напрмер устройство и внести в нее все атрибуты категорий компьютер, монитор, принтер это скроет реальную внутреннюю структуру категорий (поле жесткий диск у монитора) много лишних полей для некоторых категорий. А если создать отдельные сущности монитор, принтер, компьютер то скроется факт наличия общих харетеристик (инвентарный номер и т.п.) В теории я знаю что надо объединить общие характеристики и разъединить различные, но как это реализовать на практике?

Посмотри третий вариант
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637233
Alexander_F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_spy_
И как так организовать ссылочность? Второе поле будет внешним ключем сразу ко всем таблицам объектов?
Не лучше ли сделать главной таблицу общих характеристик и набор таблиц для каждого объекта, которые будет детальными для таблицы общих характеристик?

Возможно я не закончил мысль. Конечно для каждого объекта своя таблица, которая содержит индивидуальные для этого объекта свойства. Плюс глобальная таблица для общих свойств.

Второе поле будет внешним ключем к соответствующей таблице объекта.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637293
Alexander_F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PridobreY Посмотри третий вариант
Согласен, 3 варианта. В двух словах:

1) Все объекты в одной таблице
2) Все объекты в отдельных таблицах
3) Общие свойства объектов в одной таблице, индивидуальне - в отдельной для каждого вида объекта.

Я бы выбрал вариант 3 как самый гибкий.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637294
_spy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_F Второе поле будет внешним ключем к соответствующей таблице объекта.
Это как? Тогда уж придется создавать в общей таблице столько полей для внешних ключей, сколько таблиц объектов. Я говорил про то, что главными должны быть не таблицы объектов, а таблица общих свойств и внешние ключи будут у таблиц объектов - ссылаться на поле идентификатора таблицы общих свойств. Хотя может все же подумать над вариантом просто отдельных таблиц для каждой сущности.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637462
PridobreY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander_F PridobreY Посмотри третий вариант
Согласен, 3 варианта. В двух словах:

1) Все объекты в одной таблице
2) Все объекты в отдельных таблицах
3) Общие свойства объектов в одной таблице, индивидуальне - в отдельной для каждого вида объекта.

Я бы выбрал вариант 3 как самый гибкий.

Вы по другому трактовали, описанный мной, третий вариант. По приведенной ссылке он отличается, и намного гибче.
Суть в следующем.
Общие свойства объектов в одной таблице. Виды объектов в другой.
Для вида объекта устанавливаем перечень свойств. Для экземпляра объекта, определенного вида, заполняется установленный набор свойств. Значения этих свойств храняться в отдельных таблицах, в зависимости от типа данных (не от вида, вид лишь определяет набор свойств.) В итоге имеем возможность, добавлять новые виды объектов, изменять наборы свойств объектов, без перестройки структуры хранения данных. В случаях 1,2,3 - как описали Вы, придется добавлять поля, таблицы.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637546
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2PridobreY
В теории это, конечно, хорошо, но на практике обычно очень неэффективно.
Практически получается дублирование функций sql-сервера, его системные таблицы обьектов, свойств и т.д. дублируются пользовательскими.
Наверно, есть задачи, где это оправданно ( когда разных типов обьектов очень много и постоянное возникновение новых типов и изменение старых - часть рабочего процесса), но в большинстве случаев - имхо нет.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637551
Alexander_F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гибче, но только в том случае если придется создавать новые типы объектов,
причем делать это будет пользователь.
...
Рейтинг: 0 / 0
иерархия сущьностей
    #33637568
PridobreY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин
Наверно, есть задачи, где это оправданно ( когда разных типов обьектов очень много и постоянное возникновение новых типов и изменение старых - часть рабочего процесса), но в большинстве случаев - имхо нет.
Действительно, всё зависит от задачи.
Если различие в свойствах не велико, тогда первый вариант.
Если различий много, а типов(видов) мало, тогда второй.
Если все типы заранее не известны, и как следствие набор их свойств тоже не известен, тогда третий.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / иерархия сущьностей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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