Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как показать такое отношение на схеме / 7 сообщений из 7, страница 1 из 1
03.06.2015, 22:35
    #38975729
host.13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать такое отношение на схеме
Всем привет. Есть 2 таблицы. Одна является журналом, во второй хранятся перечисления.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE T1(
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Class1] [int] NOT NULL,
	[Class2] [int] NOT NULL,
	[Class3] [int] NOT NULL,
)
CREATE TABLE Enums (
	[EnumCode] int NOT NULL,
	[ItemCode] int NOT NULL,
	[ItemName] nvarchar(50),
CONSTRAINT [PK_ENums] PRIMARY KEY CLUSTERED 
(
	[ENumCode] ASC,
	[ItemCode] ASC
)
) 


Типов перечислений в таблице T1 много, в примере только 3 - Class1, 2 и 3. Для того, чтобы не плодить таблиц по количеству перечислений они все хранятся в таблице Enums и различается полем EnumCode. Запрашиваются данные следующим образом:
Код: sql
1.
2.
3.
4.
SELECT ID, C1.ItemName, C2.ItemName, C3.ItemName FROM T1 INNER JOIN Enums AS C1 ON C1.ItemCode = T1.Class1
INNER JOIN Enums AS C2 ON C2.ItemCode = T1.Class2
INNER JOIN Enums AS C3 ON C3.ItemCode = T1.Class3
WHERE C1.EnumCode = 1 AND C2.EnumCode = 2 AND C3.ENumCode = 3


Все работает, но как это должно выглядеть на диаграмме? Как в схеме указать ENumCode = 1, 2, 3.?
...
Рейтинг: 0 / 0
04.06.2015, 09:52
    #38975867
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать такое отношение на схеме
host.13,

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


но если очень надо изобразить, то это просто N связей 1:0..1 , с комментарием, что только одна связь может быть, и одна должна быть.
...
Рейтинг: 0 / 0
04.06.2015, 12:22
    #38976081
host.13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать такое отношение на схеме
MasterZiv,

Не, все три связи всегда есть. По уму надо было бы сделать не 1 таблицу Enums, а 3 на каждое перечисление. И тогда на схеме все прекрасно отображается. Но поскольку перечислений в системе около 200, используем одну таблицу с двумя ключевыми полями.

А вообще надо ли на схеме отображать условия? Допустимо ли изобразить просто 3 линии из Class1, Class2 и Class3, ссылающиеся на Enums.ItemCode?
...
Рейтинг: 0 / 0
04.06.2015, 12:41
    #38976116
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать такое отношение на схеме
host.13А вообще надо ли на схеме отображать условия? Допустимо ли изобразить просто 3 линии из Class1, Class2 и Class3, ссылающиеся на Enums.ItemCode?

Почему бы нет? Механизмами ссылочной целостности БД Ваши условия все равно никак не поддерживаются - сдедовательно, на схеме именно БД они не особо осмысленны.
...
Рейтинг: 0 / 0
04.06.2015, 13:23
    #38976173
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать такое отношение на схеме
host.13MasterZiv,
Не, все три связи всегда есть.


Тогда всё то же самое, но без комментариев.

Но надо сказать, что я как-то уже совсем ничего не понимаю.
Странный какой-то дизайн, 200 полей, ENUM-ы...
...
Рейтинг: 0 / 0
04.06.2015, 15:25
    #38976374
Alex_496
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать такое отношение на схеме
To MasterZiv:
ничего странного, например,

Class1 - тип образования
Class2 - семейное положение
Class3 - тип занятости
и тэ.дэ.



To host.13:
на ER-схеме можете не отображать, чтобы не загромождать ее, а сделать где-то общие пояснения ко всей схеме.
в БД ссылки можно сделать, но не включать {декларативные}, дабы не тормозить большие заливки в таблицу с последующей активацией ссылочных связей. Хотя в Oracle периодически активировал такие связи в режиме параллельности.


Более того, могу сказать Ваша TABLE Enums - это частный случай parent-child таблицы, в которой содержательные поля только
id, id_parent, nodeText. Если добавить вспомогательне поля для целей быстрого поиска детей-потомков и покрыть индексами, то получается одна таблица для всех lookUp задач.

:)
...
Рейтинг: 0 / 0
04.06.2015, 15:29
    #38976380
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать такое отношение на схеме
Можно ли ваши перечисления назвать справочниками?
Журнал T1 - это таблица 'что-где-когда' использующая эти справочники
Таблица Enums - суть универсальный справочник так?
Ищите обсуждения по этому слову
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как показать такое отношение на схеме / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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