powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как показать такое отношение на схеме
7 сообщений из 7, страница 1 из 1
Как показать такое отношение на схеме
    #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
Как показать такое отношение на схеме
    #38975867
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
host.13,

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


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

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

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

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


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

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

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



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


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

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


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