Обеспечение целостности данных
На следующем этапе каждую из выделенных сущностей необходимо преобразовать в отдельную таблицу, присвоить ей имя, определить типы и размеры полей, назначить первичные и внешние ключи, определить ограничения. В результате получим базу данных, состоящую из 9 таблиц (таблицы 2-10).
Таблица 2 - Описание структуры таблицы «Operator»
Поле | Тип данных | Размер/ формат данных | Ключ | NULL значения | Ограничения |
ID_op | integer | 4 | PK | - | Auto Increment |
FIO | varchar | 50 | - | ||
dolgnost | varchar | 100 | + | ||
adress | varchar | 100 | - | DEFAULT 'unknown' | |
tel | varchar | 20 | - | DEFAULT 'unknown' | |
ID_otd | integer | 4 | FK | - |
Таблица 3 - Описание структуры таблицы «Otdel»
Поле | Тип данных | Размер/ формат данных | Ключ | NULL значения | Ограничения |
ID_otd | integer | 4 | PK | - | AutoIncrement |
nazvanie_otd | varchar | 100 | - |
Таблица 4 - Описание структуры таблицы «Napravlenie»
Поле | Тип данных | Размер/ формат данных | Ключ | NULL значения | Ограничения |
ID_napr | integer | 4 | PK | - | Auto Increment |
nazvanie_napr | varchar | 100 | - | ||
ID_op | integer | 4 | FK | - |
Таблица 5 - Описание структуры таблицы «Pokupatel»
Поле | Типданных | Размер/ форматданных | Ключ | NULL значения | Ограничения |
ID_pkp | integer | 4 | PK | - | Auto Increment |
naimenovanie | varchar | 100 | - | ||
INN | varchar | 12 | - | ||
adress | varchar | 100 | - | DEFAULT 'unknown' | |
tel | varchar | 20 | - | DEFAULT 'unknown' | |
kontact | varchar | 30 | + |
|
|
Таблица 6 - Описание структуры таблицы «Tovar»
Поле | Типданных | Размер/ форматданных | Ключ | NULL значения | Ограничения |
ID_tvr | integer | 4 | PK | - | Auto Increment |
articul | varchar | 20 | - | ||
nazvanie | varchar | 100 | - | ||
ed_izm | varchar | 10 | - | ||
ves | decimal | (10,2) | - | ||
kol | integer | 4 | - | ||
price | money | - | - | ||
ID_kat | integer | 4 | FK | - |
Таблица 7 - Описание структуры таблицы «Kategoria»
Поле | Типданных | Размер/ форматданных | Ключ | NULL значения | Ограничения |
ID_kat | integer | 4 | PK | - | Auto Increment |
nazvanie_kat | varchar | 50 | - |
Таблица 8 - Описание структуры таблицы «Prodazha»
Поле | Типданных | Размер/ форматданных | Ключ | NULL значения | Ограничения |
ID_prd | integer | 4 | PK | - | Auto Increment |
num_dog | varchar | 12 | - | ||
data_dog | datetime | - | - | CHECK (data_dog<= GetDate() AND Year(data_dog)>1900) | |
summa_dog | money | 100 | - | DEFAULT 0 | |
ID_pkp | integer | 4 | FK | - |
Таблица 9 - Описание структуры таблицы «Otgruzka»
Поле | Типданных | Размер/ форматданных | Ключ | NULL значения | Ограничения |
ID_otgr | integer | 4 | PK | - | Auto Increment |
num_UPD | varchar | 15 | - | ||
data_UPD | datetime | - | - | CHECK (data_ UPD<= GetDate() AND Year(data_ UPD)>1900) | |
sum_ves | decimal | (10,2) | - | Sum(UPD.ves_tvr) WHERE UPD.ID_otgr= Otgruzka.ID_otgr | |
cost | money | - | - | Sum(UPD. cost_tvr) WHERE UPD.ID_otgr= Otgruzka.ID_otgr | |
ID_prd | integer | 4 | FK | - | |
ID_op | integer | 4 | FK | - |
|
|
Таблица 10 - Описание структуры таблицы «UPD»
Поле | Тип данных | Размер/ формат данных | Ключ | NULL значения | Ограничения |
ID_upd | integer | 4 | PK | - | Auto Increment |
ID_tvr | integer | 4 | FK | - | |
ID_otgr | integer | 4 | FK | - | |
kol_tvr | integer | 4 | - | ||
ves_tvr | decimal | (10,2) | - | kol_tvr*Tovar.ves WHERE UPD.ID_tvr= Tovar.ID_tvr | |
cost_tvr | money | - | - | kol_tvr*Tovar.price WHERE UPD.ID_tvr= Tovar.ID_tvr |
Итоговая схема БД
На предыдущих этапах был определен перечень таблиц базы данных отдела выписки товаров фирмы «АвтоМАГ», была проведена нормализация полученных отношений, назначены первичные и вторичные ключи в таблицах.
В таблице 11 представлено краткое описание связей между разработанными таблицами.
Таблица 11 - Спецификация связей базы данных отдела выписки товаров ООО «АвтоМАГ»
Отношение 1 | Отношение 2 | Связующий ключ | Степень связи |
Operator | Otdel | ID_otd | M:1 |
Operator | Napravlenie | ID_op | 1:N |
Tovar | Kategoria | ID_kat | M:1 |
Prodazha | Pokupatel | ID_pkp | M:1 |
Otgruzka | Prodazha | ID_prd | M:1 |
Otgruzka | Operator | ID_op | M:1 |
UPD | Otgruzka | ID_otgr | M:1 |
UPD | Tovar | ID_tvr | M:1 |
|
|
Для более наглядного представления полученные объекты БД и связи между ними отражены на рис. 2.
Рис. 2. Схема базы данных отдела выписки товаров ООО «АвтоМАГ
Вывод по первой главе
Таким образом,
Глава 2: Программная реализация БД на основе SQLServer
Создание БД и ее объектов
Для создания базы данных отдела выписки товаров оптовой фирмы «АвтоМАГ» использовался графический интерфейс среды ManagementStudioСУБД SQLServer.
Для создания новой базы данных следует выбрать опцию «Создать базу данных…»в Обозревателе объектовManagementStudio в контекстном меню раздела «Базы данных». Откроется окно «Создание базы данных», в котором необходимо задать свойства новой БД, такие как имя БД и место расположения файлов БД (рис. 3). Остальные все параметры и свойства можно оставить по умолчанию.
Рис. 3. Создание БД в ManagementStudio, вкладка «Общие»
После нажатия кнопки «OК»созданная база данных появится в Обозревателе объектов в разделе «Базы данных» (рис.4).
Рис. 4.Обозреватель объектов ManagementStudio после создания новой БД
На следующем этапе необходимо создать таблицы базы данных. Таблицы также можно создавать с использованием графического интерфейса СУБД MSSQLServer, а можно использовать SQL-скрипт для создания таблиц. Второй способ является наиболее быстрым. Для запуска редактора команд в ManagementStudioнеобходимо воспользоваться кнопкой «Создать запрос» на панели управления и в открывшемся окне ввести текст команды. Запуск на исполнение осуществляется кнопкой «Выполнить»
|
|
Текст SQL-скрипта создания таблиц БД отдела выписки товаров ООО «АвтоМАГ» представлен ниже.
CREATETABLEOperator(
ID_opintNOTNULLIDENTITY(1,1),
FIOvarchar(50)NOTNULL,
dolgnostvarchar(100),
adressvarchar(100)NOTNULLDEFAULT'unknown',
telvarchar(20)NOTNULLDEFAULT'unknown',
ID_otdintNOTNULL,
CONSTRAINT[PK_OPERATOR]PRIMARYKEYCLUSTERED
(
[ID_op]ASC
)WITH (IGNORE_DUP_KEY=OFF)
)
GO
CREATETABLEOtdel(
ID_otdintNOTNULLIDENTITY(1,1),
nazvanie_otdvarchar(100)NOTNULL,
CONSTRAINT[PK_OTDEL]PRIMARYKEYCLUSTERED
(
[ID_otd]ASC
)WITH (IGNORE_DUP_KEY=OFF)
)
GO
CREATETABLENapravlenie(
ID_naprintNOTNULLIDENTITY(1,1),
nazvanie_naprvarchar(100)NOTNULL,
ID_opintNOTNULL,
CONSTRAINT[PK_NAPRAVLENIE]PRIMARYKEYCLUSTERED
(
[ID_napr]ASC
)WITH (IGNORE_DUP_KEY=OFF)
)
GO
CREATETABLEPokupatel(
ID_pkpintNOTNULLIDENTITY(1,1),
naimenovanievarchar(100)NOTNULL,
INNvarchar(12)NOTNULL,
adressvarchar(100)NOTNULLDEFAULT'unknown',
telvarchar(20)NOTNULLDEFAULT'unknown',
kontactvarchar(30),
CONSTRAINT[PK_POKUPATEL]PRIMARYKEYCLUSTERED
(
[ID_pkp]ASC
)WITH (IGNORE_DUP_KEY=OFF)
)
GO
CREATETABLETovar(
ID_tvrintNOTNULLIDENTITY(1,1),
articulvarchar(20)NOTNULL,
nazvanievarchar(100)NOTNULL,
ed_izmvarchar(10)NOTNULL,
vesdecimalNOTNULL,
kolintNOTNULL,
pricemoneyNOTNULL,
ID_katintNOTNULL,
CONSTRAINT[PK_TOVAR]PRIMARYKEYCLUSTERED
(
[ID_tvr]ASC
)WITH (IGNORE_DUP_KEY=OFF)
)
GO
CREATETABLEKategoria(
ID_katintNOTNULLIDENTITY(1,1),
nazvanie_katvarchar(50)NOTNULL,
CONSTRAINT[PK_KATEGORIA]PRIMARYKEYCLUSTERED
(
[ID_kat]ASC
)WITH (IGNORE_DUP_KEY=OFF)
)
GO
CREATETABLEProdazha(
ID_prdintNOTNULLIDENTITY(1,1),
num_dogvarchar(12)NOTNULL,
data_dogdatetimeNOTNULLCONSTRAINT[CHECK_DATA_DOG]CHECK (data_dog<=GetDate()ANDYear(data_dog)>1900),
summa_dogmoneyNOTNULLDEFAULT'0',
ID_pkpintNOTNULL,
CONSTRAINT[PK_PRODAZHA]PRIMARYKEYCLUSTERED
(
[ID_prd]ASC
)WITH (IGNORE_DUP_KEY=OFF)
)
GO
CREATETABLEOtgruzka(
ID_otgrintNOTNULLIDENTITY(1,1),
num_UPDvarchar(15)NOTNULL,
data_UPDdatetimeNOTNULLCONSTRAINT[CHECK_DATA_UPD]CHECK (data_UPD<=GetDate()ANDYear(data_UPD)>1900),
sum_vesdecimalNOTNULL,
costmoneyNOTNULL,
ID_prdintNOTNULL,
ID_opintNOTNULL,
CONSTRAINT[PK_OTGRUZKA]PRIMARYKEYCLUSTERED
(
[ID_otgr]ASC
)WITH (IGNORE_DUP_KEY=OFF)
)
GO
CREATETABLEUPD(
ID_updintNOTNULLIDENTITY(1,1),
ID_tvrintNOTNULL,
ID_otgrintNOTNULL,
kol_tvrintNOTNULL,
ves_tvrdecimalNOTNULL,
cost_tvrmoneyNOTNULL,
CONSTRAINT[PK_UPD]PRIMARYKEYCLUSTERED
(
[ID_upd]ASC
)WITH (IGNORE_DUP_KEY=OFF)
)
GO
Внешний вид Обозревателя объектов ManаgementStudioпосле выполнения команд на создание таблиц представлен на рис. 5.
Рис. 5.Обозреватель объектов ManagementStudio после создания таблиц БД
Установление связей между таблицами
Установление связей между таблицами базы удобнее выполнять с помощью SQL–команд, которыеприведеныниже.
ALTERTABLEOperatorWITHCHECKADDCONSTRAINT[Operator_fk0]FOREIGNKEY ([ID_otd])REFERENCESOtdel([ID_otd])
ONUPDATECASCADE
GO
ALTERTABLEOperatorCHECKCONSTRAINT[Operator_fk0]
GO
ALTERTABLENapravlenieWITHCHECKADDCONSTRAINT[Napravlenie_fk0]FOREIGNKEY ([ID_op])REFERENCESOperator([ID_op])
ONUPDATECASCADE
GO
ALTERTABLENapravlenieCHECKCONSTRAINT[Napravlenie_fk0]
GO
ALTERTABLETovarWITHCHECKADDCONSTRAINT[Tovar_fk0]FOREIGNKEY ([ID_kat])REFERENCES[Kategoria]([ID_kat])
ONUPDATECASCADE
GO
ALTERTABLETovarCHECKCONSTRAINT[Tovar_fk0]
GO
ALTERTABLEProdazhaWITHCHECKADDCONSTRAINT[Prodazha_fk0]FOREIGNKEY ([ID_pkp])REFERENCES[Pokupatel]([ID_pkp])
ONUPDATECASCADE
GO
ALTERTABLEProdazhaCHECKCONSTRAINT[Prodazha_fk0]
GO
ALTERTABLEOtgruzkaWITHCHECKADDCONSTRAINT[Otgruzka_fk0]FOREIGNKEY ([ID_prd])REFERENCESProdazha([ID_prd])
ONUPDATECASCADE
GO
ALTERTABLEOtgruzkaCHECKCONSTRAINT[Otgruzka_fk0]
GO
ALTERTABLEOtgruzkaWITHCHECKADDCONSTRAINT[Otgruzka_fk1]FOREIGNKEY ([ID_op])REFERENCESOperator([ID_op])
ONUPDATECASCADE
GO
ALTERTABLEOtgruzkaCHECKCONSTRAINT[Otgruzka_fk1]
GO
ALTERTABLEUPDWITHCHECKADDCONSTRAINT[UPD_fk0]FOREIGNKEY ([ID_tvr])REFERENCESTovar([ID_tvr])
ONUPDATECASCADE
GO
ALTERTABLEUPDCHECKCONSTRAINT[UPD_fk0]
GO
ALTERTABLEUPDWITHCHECKADDCONSTRAINT[UPD_fk1]FOREIGNKEY ([ID_otgr])REFERENCESOtgruzka([ID_otgr])
ONUPDATECASCADE
GO
ALTERTABLEUPDCHECKCONSTRAINT[UPD_fk1]
GO
Схема полученных связей для таблиц БД отдела выписки товаров оптовой фирмы «АвтоМАГ» представлена в Приложении 1.
Дата добавления: 2018-04-05; просмотров: 316; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!