Имеется предметная область «Сбытовая логистика – Бухгалтерия дебиторов. Предметная область представлена следующим набором сущностей:
Контракт — долгосрочное рамочное соглашение между сторонами; Заказ — краткосрочное соглашение на поставку в рамках контракта, обычно – месячное доп. соглашение; Поставка — товарно — транспортная накладная, документ, отражающий факт поставки по заказу; Фактура — документ, отражающий переход права собственности на поставляемый товар и акцепт Заказчиком дебиторской задолженности. Фактура может выставляться на одну или несколько поставок; Платеж — документ, отражающий факт поступления денег от Заказчика. Платежи могут поступать авансом или по факту поставки в погашение задолженности; Документ выравнивания — документ, отражающий сопоставление данных платежей и фактур, отражает бухгалтерский факт погашения дебиторской задолженности.
1.1 Контракт: Основные характеристики: Период действия (год) Заказчик (Регион, Страна, — «Россия и Белоруссия– СНГ – Дальнее зарубежье»); Продукт – Группа продуктов; Показатели: Объем по договору; Стоимость по договору; Договорная цена позиции Контракта.
1.2 Заказ Содержит уточненный на месяц объем поставки, уточнения по ценам. Наследует характеристики контракта. Кроме того, содержит дополнительные сведения: Период действия заказа (Месяц) Требуемая дата поставки; Показатели: Объем по заказу, Стоимость по заказу; Договорная цена позиции Заказа.
1.3 Поставка Наследует атрибутику заказа, кроме того, содержит следующие признаки: Дата отгрузки (с Предприятия); Дата передачи права собственности (Заказчику). 2 Показатели: Объем поставки; Стоимость поставки.
1.4 Фактура: Наследует атрибутику поставок, кроме того, содержит признаки: Дата фактуры (возникновения дебиторской задолженности); Планируемая дата погашения дебиторской задолженности. Показатели: Объем по фактуре; Стоимость по фактуре.
1.5 Платеж Содержит признаки: Контракт; Заказчик; Дата платежа Показатели: Сумма платежа;
1.6 Документ выравнивания Наследует признаки фактуры и платежа. Кроме того, содержит следующие признаки: Дата выравнивания (погашения дебиторской задолженности) Показатели: Сумма выравнивания.
Схема информационного Хранилища в виде ER – диаграммы.
Будем проектировать хранилище данных в виде ER — диаграммы в программе ERWIN. AllFusion ERwin Data Modeler (ранее ERwin) — CASE-средство для проектирования и документирования баз данных, которое позволяет создавать, документировать и сопровождать базы данных, хранилища и витрины данных. Модели данных помогают визуализировать структуру данных, обеспечивая эффективный процесс организации, управления и администрирования таких аспектов деятельности предприятия, как уровень сложности данных, технологий баз данных и среды развертывания.
ERWIN позволяет проектировать диаграмму на логическом и физическом уровне (SQL Server). Создадим 6 сущностей (+ я добил дополнительно сущность клиент), в каждой сущности добавим ключи. Зададим связь.
CREATE TABLE [Документ_выравнивания]
(
[Документ_выравнивания] varchar(20) NOT NULL,
[Сумма_выравнивания] money NULL ,
[Id_Выравнивания] integer NOT NULL ,
[Id_Фактуры] integer NULL ,
[id_Платежа] integer NULL
)
go
ALTER TABLE [Документ_выравнивания]
ADD CONSTRAINT [XPKДокумент_выравнивания] PRIMARY KEY CLUSTERED ([Id_Выравнивания] ASC)
go
CREATE TABLE [Заказ]
(
[Период_действия] date NOT NULL ,
[Требуемая_дата_поставки] date NOT NULL ,
[Объем_по_заказу] integer NOT NULL ,
[Стоимость_по_заказу] money NOT NULL ,
[Договорная_цена_по_позиции] money NOT NULL ,
[Id_Заказа] integer NOT NULL ,
[id_Контракта] integer NOT NULL
)
go
ALTER TABLE [Заказ]
ADD CONSTRAINT [XPKЗаказ] PRIMARY KEY CLUSTERED ([Id_Заказа] ASC)
go
CREATE TABLE [Клиент]
(
[id_Контракта] integer NOT NULL ,
[Id_Заказа] integer NOT NULL ,
[Фамилия] char(18) NOT NULL ,
[Имя] char(18) NOT NULL ,
[Адрес] char(18) NOT NULL ,
[Телефон] char(18) NOT NULL ,
[id_Платежа] integer NOT NULL ,
[Id_Поставки] integer NOT NULL ,
[Id_Фактуры] integer NOT NULL ,
[Id_Выравнивания] integer NOT NULL ,
[id] integer NOT NULL
)
go
ALTER TABLE [Клиент]
ADD CONSTRAINT [XPKКлиент] PRIMARY KEY CLUSTERED ([id] ASC)
go
CREATE TABLE [Контракт]
(
[id_Контракта] integer NOT NULL ,
[Период_действия] date NOT NULL ,
[Регион] varchar(20) NOT NULL ,
[Продукт] varchar(20) NOT NULL ,
[Объем_по_договору] integer NOT NULL ,
[Стоимость_по_договору] integer NOT NULL ,
[Договорная_цена_по_позиции_контракта] integer NOT NULL
)
go
ALTER TABLE [Контракт]
ADD CONSTRAINT [XPKКонтракт] PRIMARY KEY CLUSTERED ([id_Контракта] ASC)
go
CREATE TABLE [Платеж]
(
[id_Платежа] integer NOT NULL ,
[Контракт] varchar() NOT NULL ,
[Заказчик] varchar() NOT NULL ,
[Дата_платежа] date NOT NULL ,
[Сумма_платежа] money NOT NULL
)
go
ALTER TABLE [Платеж]
ADD CONSTRAINT [XPKПлатеж] PRIMARY KEY CLUSTERED ([id_Платежа] ASC)
go
CREATE TABLE [Поставка]
(
[Дата_отгрузки] date NOT NULL ,
[Дата_передачи_права_собственности] date NULL ,
[Объем_поставки] integer NOT NULL ,
[Стоимость_поставки] money NOT NULL ,
[Id_Поставки] integer NOT NULL ,
[Id_Заказа] integer NOT NULL
)
go
ALTER TABLE [Поставка]
ADD CONSTRAINT [XPKПоставка] PRIMARY KEY CLUSTERED ([Id_Поставки] ASC)
go
CREATE TABLE [Фактура]
(
[Дата_фактуры] date NOT NULL ,
[Планируемая_дата_погашения_дебиторской_задолжности] date NOT NULL,
[Стоимость_по_фактуре] money NOT NULL ,
[Id_Фактуры] integer NOT NULL ,
[Id_Поставки] integer NOT NULL
)
go
Перенесем спроектированное хранилище в SQL SERVER.
На гитхабе https://github.com/aovakur/databasedesign