зується назва, тип (факультативна або обов'язкова), кардинальність (1: 1, 1: n або m: n) і ступінь (унарна, бінарна, тернарний або n-арная). Инфологическая модель предметної області Готель представлена ??на рис. 1.
Малюнок 1. Инфологическая (концептуальна) модель предметної області
1.2 Логічна структура бази даних
На етапі логічного проектування розробляється логічна (концептуальна) структура БД. Для реляційної моделі існують формальні правила, які дозволяють перетворити інфологічну модель ПрО у вигляді ER-діаграми в логічну схему бази даних. Крім отримання схеми БД в цілому на цьому етапі виконують створення схем відносин та їх нормалізацію.
Шість сутностей знаходяться в третій нормальній формі, тобто всі атрибути сутностей містять атомарні значення (значення в домені не є ні списками, ні множинами простих або складних значень); кожен неключових атрибут повністю залежить від первинного ключа; ніякої неключових атрибут не залежить від іншого неключевого атрибута. Логічна структура предметної області Готель представлена ??на рис.2.
Малюнок 2 Логічна структура бази даних
1.3 Фізична структура бази даних
Етап фізичного проектування полягає у визначенні схеми зберігання, тобто фізичної структури БД. Схема зберігання залежить від тієї фізичної структури, яку підтримує обрана СУБД. Фізична структура БД, з одного боку, повинна адекватно відображати логічну структуруБД, а з іншого боку, повинна забезпечувати ефективне розміщення даних і швидкий доступ до них. Результати цього етапу документуються у формі схеми зберігання на мові визначення даних (DDL, Data Definition Language) обраної СУБД. Прийняті на цьому етапі рішення мають величезний вплив на продуктивність системи.
Однією з найважливіших складових проекту бази даних є розробка засобів захисту БД. Захист даних має два аспекти: захист від збоїв і захист від несанкціонованого доступу. Для захисту від збоїв на етапі фізичного проектування розробляється стратегія резервного копіювання.
Для захисту від несанкціонованого доступу кожному користувачеві доступ до даних надається тільки відповідно до його правами доступу, набір яких також є складовою частиною проекту БД.
Кожне реляционное ставлення відповідає однієї сутності (об'єкту ПрО) і в нього вносяться всі атрибути цієї сутності. Для кожного відносини визначаються первинний ключ і зовнішні ключі (у відповідності зі схемою БД). У тому випадку, якщо базове ставлення не має потенційних ключів, вводиться сурогатний первинний ключ, який не несе смислового навантаження і служить тільки для ідентифікації записів.
Відносини наведені в табл.1-5. Для кожного відносини вказані атрибути з їх внутрішнім назвою, типом і довжиною.
Таблиця 1. Клієнти
АтрібутиТіпКлючОпісаніеId_kIntprimaryКод категорііFVarchar (50) ФаміліяIVarchar (50) ІмяOVarchar (50) ОтчествоTelVarchar (50) ТелефонPassportVarchar (50) Серія та номер паспорта
Таблиця 2. Номери
АтрібутиТіпКлючОпісаніеId_nIntprimaryКод номераId_katIntForeignКод категорііCcMoneyСтоімость за суткіKmIntКолічество місць
Таблиця 3. Персонал
АтрібутиТіпКлючОпісаніеId_pIntprimaryКод работнікаFamVarchar (50) ФаміліяImVarchar (50) ІмяOtVarchar (50) ОтчествоDoljVarchar (50) ДолжностьZpMoneyЗаработная плата
Таблиця 4. Категорії номерів
АтрібутиТіпКлючОпісаніеId_katIntprimaryКод категорііNazvnVarchar (50) Назва
Таблиця 5. Облік роботи
АтрібутиТіпКлючОпісаніеId_oIntprimaryКод отчетаId_nIntForeignКод номераId_kIntForeignКод кліентаDzDatetimeДата заселеніяDvDatetimeДата виселеніяKdIntКолічество днейId_pIntForeignКод працівника
2. Реалізація проекту БД
2.1 Створення таблиць
1. Ставлення kl (Клієнти)
create table kl (id_k int identity (1,1) not null primary key, f varchar (50) not null, i varchar (50) not null, o varchar (50) not null, dr datetime not null, tel varchar (50) not null, pasport varchar (50) not null);
2. Ставлення nomer (Номер)
create table nomer (id_n int identity (1,1) not null primary key, id_kat int not null references kat, cc money not null, km int not null char between 1 and 4);
3. Ставлення Personal (Персонал) table personal (id_p int identity (1,1) not null primary key, fam varchar (50) not null, im varchar (50) not null, ot varchar (50), dolj varchar (50) not null , zp money not...