
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
31.03.2006, 07:35
|
|||
|---|---|---|---|
|
|||
иерархия сущьностей |
|||
|
#18+
Как правильно описать с помощью sql иерархию сущьностей: экземпляры объекта образуют подмножества, обладающие сходными и различными свойствами и вступающие в различные связи. Например, объект устройство (родовая сущьность, суперкласс) в него входят категории компьютер, монитор, принтер часть характеристик которых совпадает например инвентарный номер, кабинет, а другая часть свойственна отдельно каждой категории например жесткий диск, разрешение экрана. Создать одну таблицу со всеми атрибутами или отдельно для компьютера, монитора и т.д. будет не правильно. Как это можно сделать? Использую MS Sql server express и Management Studio Express Edition CTP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 08:21
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
это Вам в форум по Проектированию БД лучше. там такое не раз и не два уже обсуждалось... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 09:32
|
|||
|---|---|---|---|
|
|||
иерархия сущьностей |
|||
|
#18+
vitabir Создать одну таблицу со всеми атрибутами или отдельно для компьютера, монитора и т.д. будет не правильно. Почему неправильно? Аргументируйте. Возможен вариант, когда общие свойства хранятся в одной таблице, а индивидуальные в соответствующей каждому объекту таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 09:49
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
vitabirСоздать одну таблицу со всеми атрибутами или отдельно для компьютера, монитора и т.д. будет не правильно. Именно так и надо сделать. Т.е. так как вы бы делали на любом языке программирования: один общий тип с вложенными подтипами причем уровней вложения м.б. много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 10:31
|
|||
|---|---|---|---|
|
|||
иерархия сущьностей |
|||
|
#18+
Если сделать одну сущьность, напрмер устройство и внести в нее все атрибуты категорий компьютер, монитор, принтер это скроет реальную внутреннюю структуру категорий (поле жесткий диск у монитора) много лишних полей для некоторых категорий. А если создать отдельные сущности монитор, принтер, компьютер то скроется факт наличия общих харетеристик (инвентарный номер и т.п.) В теории я знаю что надо объединить общие характеристики и разъединить различные, но как это реализовать на практике? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 10:51
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
vitabir В теории я знаю что надо объединить общие характеристики и разъединить различные, но как это реализовать на практике? Если язык позволяет то введением пользовательских типов (а ля С или Oracle) если не позволяет то комментариями. Лишние поля не мешают - они ведь не будут заполняться (зависит от интерфейса). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 10:57
|
|||
|---|---|---|---|
|
|||
иерархия сущьностей |
|||
|
#18+
мод vitabir В теории я знаю что надо объединить общие характеристики и разъединить различные, но как это реализовать на практике? Если язык позволяет то введением пользовательских типов (а ля С или Oracle) если не позволяет то комментариями. Лишние поля не мешают - они ведь не будут заполняться (зависит от интерфейса). использую SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 11:16
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
vitabirиспользую SQL В SQL оракла есть типы. У других не знаю. В крайнем случае - комментарии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 11:30
|
|||
|---|---|---|---|
|
|||
иерархия сущьностей |
|||
|
#18+
Возможны 2 варианта: 1) Сделать для каждой категории свою отдельную таблицу, но общие поля во всех категориях назвать одинаково. Если конечно количество общих полей заранее известно. Здесь возникает проблема, когда нужно изменить количество общих полей - нужно лезть во все таблицы. 2) Существует таблица, содержащая общие характеристики. Плюс в этой таблице есть 2 поля: одно указывает тип объекта, на основании которого можно обращаться к таблице, в которой содержатся уникальные свойства соответствующего объекта; второе поле содержит ключ объекта в соответствующей таблице. На мой взгляд второй вариант более гибкий, так как при изменении количества общих свойств изменения нужно вносить только в одну таблицу. Других вариантов просто нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 11:46
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
Alexander_F2) Существует таблица, содержащая общие характеристики. Плюс в этой таблице есть 2 поля: одно указывает тип объекта, на основании которого можно обращаться к таблице, в которой содержатся уникальные свойства соответствующего объекта; второе поле содержит ключ объекта в соответствующей таблице. И как так организовать ссылочность? Второе поле будет внешним ключем сразу ко всем таблицам объектов? Не лучше ли сделать главной таблицу общих характеристик и набор таблиц для каждого объекта, которые будет детальными для таблицы общих характеристик? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 11:53
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
Alexander_FДругих вариантов просто нет. одна сущность=одна таблица остальное от лукавого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 12:04
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
vitabirЕсли сделать одну сущьность, напрмер устройство и внести в нее все атрибуты категорий компьютер, монитор, принтер это скроет реальную внутреннюю структуру категорий (поле жесткий диск у монитора) много лишних полей для некоторых категорий. А если создать отдельные сущности монитор, принтер, компьютер то скроется факт наличия общих харетеристик (инвентарный номер и т.п.) В теории я знаю что надо объединить общие характеристики и разъединить различные, но как это реализовать на практике? Посмотри третий вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 12:06
|
|||
|---|---|---|---|
|
|||
иерархия сущьностей |
|||
|
#18+
_spy_ И как так организовать ссылочность? Второе поле будет внешним ключем сразу ко всем таблицам объектов? Не лучше ли сделать главной таблицу общих характеристик и набор таблиц для каждого объекта, которые будет детальными для таблицы общих характеристик? Возможно я не закончил мысль. Конечно для каждого объекта своя таблица, которая содержит индивидуальные для этого объекта свойства. Плюс глобальная таблица для общих свойств. Второе поле будет внешним ключем к соответствующей таблице объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 12:23
|
|||
|---|---|---|---|
|
|||
иерархия сущьностей |
|||
|
#18+
PridobreY Посмотри третий вариант Согласен, 3 варианта. В двух словах: 1) Все объекты в одной таблице 2) Все объекты в отдельных таблицах 3) Общие свойства объектов в одной таблице, индивидуальне - в отдельной для каждого вида объекта. Я бы выбрал вариант 3 как самый гибкий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 12:23
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
Alexander_F Второе поле будет внешним ключем к соответствующей таблице объекта. Это как? Тогда уж придется создавать в общей таблице столько полей для внешних ключей, сколько таблиц объектов. Я говорил про то, что главными должны быть не таблицы объектов, а таблица общих свойств и внешние ключи будут у таблиц объектов - ссылаться на поле идентификатора таблицы общих свойств. Хотя может все же подумать над вариантом просто отдельных таблиц для каждой сущности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 13:03
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
Alexander_F PridobreY Посмотри третий вариант Согласен, 3 варианта. В двух словах: 1) Все объекты в одной таблице 2) Все объекты в отдельных таблицах 3) Общие свойства объектов в одной таблице, индивидуальне - в отдельной для каждого вида объекта. Я бы выбрал вариант 3 как самый гибкий. Вы по другому трактовали, описанный мной, третий вариант. По приведенной ссылке он отличается, и намного гибче. Суть в следующем. Общие свойства объектов в одной таблице. Виды объектов в другой. Для вида объекта устанавливаем перечень свойств. Для экземпляра объекта, определенного вида, заполняется установленный набор свойств. Значения этих свойств храняться в отдельных таблицах, в зависимости от типа данных (не от вида, вид лишь определяет набор свойств.) В итоге имеем возможность, добавлять новые виды объектов, изменять наборы свойств объектов, без перестройки структуры хранения данных. В случаях 1,2,3 - как описали Вы, придется добавлять поля, таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 13:26
|
|||
|---|---|---|---|
|
|||
иерархия сущьностей |
|||
|
#18+
2PridobreY В теории это, конечно, хорошо, но на практике обычно очень неэффективно. Практически получается дублирование функций sql-сервера, его системные таблицы обьектов, свойств и т.д. дублируются пользовательскими. Наверно, есть задачи, где это оправданно ( когда разных типов обьектов очень много и постоянное возникновение новых типов и изменение старых - часть рабочего процесса), но в большинстве случаев - имхо нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 13:30
|
|||
|---|---|---|---|
|
|||
иерархия сущьностей |
|||
|
#18+
Гибче, но только в том случае если придется создавать новые типы объектов, причем делать это будет пользователь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2006, 13:37
|
|||
|---|---|---|---|
иерархия сущьностей |
|||
|
#18+
Кот Матроскин Наверно, есть задачи, где это оправданно ( когда разных типов обьектов очень много и постоянное возникновение новых типов и изменение старых - часть рабочего процесса), но в большинстве случаев - имхо нет. Действительно, всё зависит от задачи. Если различие в свойствах не велико, тогда первый вариант. Если различий много, а типов(видов) мало, тогда второй. Если все типы заранее не известны, и как следствие набор их свойств тоже не известен, тогда третий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&mobile=1&tid=1545339]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 465ms |

| 0 / 0 |
