Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сводная таблица вторичных данных / 9 сообщений из 9, страница 1 из 1
31.05.2007, 11:43
    #34563875
Fagrant
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица вторичных данных
Есть необходимость хранить некие данные, являющиеся подчиненными другим. В общем случае все просто, ключ первичной таблицы во вторичную и поехало. А у меня такой случай - первичными таблицами может являться несколько таблиц. Т.е. в подчиненную таблицу могут добавляться записи, ссылающиеся на разные объекты БД.

Согласен, на первый взгляд, кажется что ошибка проектирования БД, если первичный объект разнесен по разным таблицам. Но это не так, разнесен он правильно, это вторичные данные унифицированы :) Как пример могу привести лог изменений объектов в БД, хотя сейчас речь не о нем.

Вопрос. Как бы правильней построить структуру подчиненной таблички? Чтобы и выбирать удобно, и лишних телодвижений не делать? Очень не хочется делать в ней несколько FK на главные таблицы. Подскажите плиз.
...
Рейтинг: 0 / 0
31.05.2007, 11:45
    #34563889
lepton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица вторичных данных
Структуру в студию!
...
Рейтинг: 0 / 0
31.05.2007, 12:23
    #34564124
Fagrant
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица вторичных данных
Здесь реализация в лоб. Неправильная, наверно :) Но представление дает.
Следует ожидать увеличение количества объектов, выглядеть будет глупо. Поэтому и суечусь.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
CREATE TABLE [dbo].[Obj1] (
	[ID_1] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[NameObj1] [char] ( 6 ) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[TypeObj1] [int] NOT NULL ,
	[BPeriod] [datetime] NOT NULL ,
	[EPeriod] [datetime] NOT NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Obj2] (
	[ID_Obj2] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[NameObj2] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[FullNameObj2] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[FK1] [int] NOT NULL ,
	[FK2] [int] NOT NULL ,
	[FK3] [int] NOT NULL ,
	[FK4] [int] NOT NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Obj3] (
	[ID_Obj3] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[Nme1] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[Nme2] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[Nme3] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[Nme4] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[Nme5] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[FK6] [int] NOT NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SecondaryObjects] (
	[ID_sys] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[ID_Obj1] [int] NULL ,
	[ID_Obj2] [int] NULL ,
	[ID_Obj3] [int] NULL ,
	[SCost] [money] NOT NULL ,
	[SDescr] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Obj1] WITH NOCHECK ADD 
	CONSTRAINT [PK_Obj1] PRIMARY KEY  CLUSTERED 
	(
		[ID_1]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[Obj2] WITH NOCHECK ADD 
	CONSTRAINT [PK_Obj2] PRIMARY KEY  CLUSTERED 
	(
		[ID_Obj2]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[Obj3] WITH NOCHECK ADD 
	CONSTRAINT [PK_Obj3] PRIMARY KEY  CLUSTERED 
	(
		[ID_Obj3]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[SecondaryObjects] WITH NOCHECK ADD 
	CONSTRAINT [PK_SecondaryObjects] PRIMARY KEY  CLUSTERED 
	(
		[ID_sys]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[SecondaryObjects] ADD 
	CONSTRAINT [FK_SecondaryObjects_Obj1] FOREIGN KEY 
	(
		[ID_Obj1]
	) REFERENCES [dbo].[Obj1] (
		[ID_1]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SecondaryObjects_Obj2] FOREIGN KEY 
	(
		[ID_Obj2]
	) REFERENCES [dbo].[Obj2] (
		[ID_Obj2]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SecondaryObjects_Obj3] FOREIGN KEY 
	(
		[ID_Obj3]
	) REFERENCES [dbo].[Obj3] (
		[ID_Obj3]
	) ON UPDATE CASCADE 
GO

...
Рейтинг: 0 / 0
31.05.2007, 16:46
    #34565450
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица вторичных данных
...
Рейтинг: 0 / 0
31.05.2007, 17:12
    #34565567
Fagrant
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица вторичных данных
ModelRдля начала
Ну, разве что для начала. Прочитал всю ветку. Узнал новое для меня слово Patronymic. Но каким боком она относится к описанной задаче не понял. По большому счету - флуд, imho. Ради трех слов о глобальном реестре сущностей - не стоило.
...
Рейтинг: 0 / 0
01.06.2007, 14:43
    #34568062
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица вторичных данных
Дык если FagrantОчень не хочется делать в ней несколько FK на главные таблицы. Подскажите плиз.то Fagrantо глобальном реестре сущностей как раз по теме. А флуд... увы да, на 2/3, но мы ж его сами флудим, не марсиане ж.
...
Рейтинг: 0 / 0
01.06.2007, 17:03
    #34568834
-------------
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица вторичных данных
FagrantОчень не хочется делать в ней несколько FK на главные таблицы
Ну и не делай
А для связи используй отдельные таблички

Код: plaintext
1.
2.
3.
4.
5.
6.
link1
   ID_Obj1
   ID_sys	

link2
   ID_Obj2
   ID_sys
...
Рейтинг: 0 / 0
01.06.2007, 21:29
    #34569406
Fagrant
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица вторичных данных
------------- FagrantОчень не хочется делать в ней несколько FK на главные таблицы
Ну и не делай
А для связи используй отдельные таблички
Я не хотел поля-то плодить, а ты предлагаешь на каждый объект целую таблицу заводить :)

Тогда уж одну на все:
Код: plaintext
1.
2.
3.
link
   ID_sys
   ID_Obj
   Obj_Num

Вариант. А еще есть?
...
Рейтинг: 0 / 0
02.06.2007, 09:39
    #34569648
Анатолий Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица вторичных данных
Fagrant
Я не хотел поля-то плодить, а ты предлагаешь на каждый объект целую таблицу заводить :)
Да ладно, судя по всему вам как раз нужно что-то типа ORDB и работать с ней через что-то типа Hibernate.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сводная таблица вторичных данных / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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