powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вот загвоздочка возникла...посоветуйте
1 сообщений из 1, страница 1 из 1
Вот загвоздочка возникла...посоветуйте
    #32205880
Фотография moonmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проектирую БД. Должна она отражать перемещения товаров между разными площадками. Основанием для перемещения товара является Документ. Документов может быть несколько типов. Причем и количество площадок и количество документов-оснований может измениться. В тоже время хотелось бы спроектировать так, чтобы потом приходилось вносить как можно меньше изменений в Хранимки.(Да доступ к данным из апликации только через ХП)
Придумал вот следующую структуру:

Код: 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.
CREATE TABLE [Тип основания] (
	[id] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[Name] [nvarchar] ( 75 ) COLLATE Cyrillic_General_CS_AS NOT NULL ,
	CONSTRAINT [PK_Тип основания] PRIMARY KEY  CLUSTERED 
	(
		[id]
	)  ON [PRIMARY] 
) ON [PRIMARY]
GO
CREATE TABLE [Основание] (
	[id] [bigint] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[osn_type] [int] NOT NULL ,
	[date] [datetime] NOT NULL ,
	[insertdate] [timestamp] NOT NULL ,
	[Manager_id] [bigint] NOT NULL ,
	[Person_id] [bigint] NOT NULL ,
	[Vis_id] [bigint] NOT NULL ,
	CONSTRAINT [PK_Основание] PRIMARY KEY  CLUSTERED 
	(
		[id]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_Основание_Тип основания] FOREIGN KEY 
	(
		[osn_type]
	) REFERENCES [Тип основания] (
		[id]
	) ON DELETE CASCADE  ON UPDATE CASCADE 
) ON [PRIMARY]
GO
CREATE TABLE [TechMovies] (
	[id] [bigint] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[Tech_id] [bigint] NOT NULL ,
	[Quatity] [bigint] NOT NULL ,
	[TakerCode] [bigint] NOT NULL ,
	[StationCode] [bigint] NOT NULL ,
	[StatioName] [nvarchar] ( 100 ) COLLATE Cyrillic_General_CS_AS NOT NULL ,
	[TakerName] [nvarchar] ( 100 ) COLLATE Cyrillic_General_CS_AS NOT NULL ,
	[Osn_id] [bigint] NOT NULL ,
	[Date] [datetime] NOT NULL ,
	[Manager_id] [bigint] NOT NULL ,
	CONSTRAINT [PK_TechMovies] PRIMARY KEY  CLUSTERED 
	(
		[id]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_TechMovies_Основание] FOREIGN KEY 
	(
		[Osn_id]
	) REFERENCES [Основание] (
		[id]
	) ON DELETE CASCADE  ON UPDATE CASCADE 
) ON [PRIMARY]
GO

Тогда при добавлении нового типа Документа который может является основанием для перемещения выполняем следующее:
Код: plaintext
1.
INSERT INTO dbo.[Тип основания]([Name])
VALUES(N'Договор поставки')

В случае если в договоре поставки необходимо будет сохранять какие либо данные которые не покрываются таблицей "Основание" а это будет почти наверняка. Создаем новую таблицу к примеру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE [Договор поставки] (
	[id] [bigint] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[osn_id] [int] NOT NULL ,
	[Sum] money not null ,  -- то что нельзя было сохранить в Основании для примера
 
	CONSTRAINT [PK_Основание] PRIMARY KEY  CLUSTERED 
	(
		[id]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_Основание_Тип основания] FOREIGN KEY 
	(
		[osn_id]
	) REFERENCES [Основание] (
		[id]
	) ON DELETE CASCADE  ON UPDATE CASCADE 
) ON [PRIMARY]

и так далее, тогда ХП возвращающая все перемещения осуществленные на основании какого-то документа не придется править независимо от внесения этих документов. Да и вытащить инфу по какому либо документу тоже будет проще. Верно ли я думаю или есть другие более совершенные пути?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вот загвоздочка возникла...посоветуйте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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