- •1. Стратегія автоматизації предметної області
- •1.1. Загальні положення
- •1.2. Мета, цілі та задачі створення бази даних
- •1.3. Вимоги до інформаційного забезпечення
- •2. Аналіз предметної області
- •2.1. Загальні положення системного аналізу по
- •2.2. Загальні положення ведення каталогу видань, їх зберігання та видачі в бібліотеці
- •2.3.2. Сутність «Заголовок»
- •2.3.3. Сутність «Видавництво»
- •2.3. Системний аналіз предметної області
- •2.3.1. Сутність «Тип видання»
- •2.3.4. Сутність «Автор»
- •2.3.5. Сутність «Стиль»
- •2.3.6. Сутність «Видання»
- •2.3.7. Сутність «Співавтори»
- •2.3.8. Сутність «Обкладинка»
- •2.3.9. Сутність «Місце»
- •2.3.10. Сутність «Реєстрація»
- •2.3.11. Сутність «Читацький квиток»
- •2.3.12. Сутність «Видача»
- •2.4. Інформаційно-довідкові задачі
- •3. Концептуальне моделювання предметної області
- •3.1. Теоретичні положення концептуального моделювання
- •Ключові результати етапу концептуального моделювання
- •3.2. Мова er—моделювання по
- •3.2. Побудова концептуальної моделі бібліотеки
- •4. Логічне та фізичне проектування бази даних
- •4.1. Логічне проектування
- •Крок 1. Перетворення сутностей у таблиці
- •Крок 2. Перетворення атрибутів у стовпці
- •Крок 3. Подання унікальних ідентифікаторів ключами таблиць
- •Крок 4. Перетворення зв'язків багато-до-одного і один-до-одного в зовнішні ключі
- •Крок 5. Введення спеціальних первинних ключів
- •4.2. Фізичне проектування
- •4.2.1. Скрипти створення бази даних
- •4.2.2. Інформаційно–пошукові запити
- •4.2.2.1. Інформаційні запити пов’язані з виданнями
- •4.2.2.2. Інформаційні запити пов’язані із розміщенням та реєстрацією видання
- •4.2.2.3. Інформаційні запити пов’язані із видачею літератури читачам
- •Висновки
4.2. Фізичне проектування
База даних спроектована для її збереження у СКБД Oracle, яка підтримує реляційну модель даних і є об’єкто-реляційною СКБД. Ця СКБД має дуже розвинені можливості по створенню та супроводу баз даних, оскільки володіє найбільш розвиненою системою типів даних, можливостями індексування полів, що дозволяє одержувати доступ до даних за мінімальний час, а також функціями по забезпеченню підтримки цілісності даних між реляційними таблицями, що дозволяє розробнику мінімізувати тимчасові витрати на створення бази даних, а кінцевому користувачеві витрати на підтримку цілісності збережених даних і одержання даних з бази даних. Робота з базою даних підтримується за допомогою реляційної мови запитів SQL.
Логічна модель бази даних легко відображається в реляційну фізичну модель, оскільки логічна модель була побудована з використанням реляційної структури даних. Крім того, логічна модель була приведена у другу третю форму, тому усі відношення представляються у фізичній моделі окремими таблицями. У результаті отримано дванадцять таблиць реляційної бази даних, де кожне відношення прямо відповідає окремій таблиці, атрибути кожного відношення стають полями цієї таблиці, а первинні ключі відношень стають первинними ключами таблиць.
4.2.1. Скрипти створення бази даних
Наведемо скрипт мови SQL Oracle, який створює таблиці БД.
1. Створення таблиці PUB_TYPE
CREATE TABLE PUB_TYPE (
PType integer CONSTRAINT type_prk PRIMARY KEY,
Description char(25) CONSTRAINT t_desc_unq UNIQUE NOT NULL,
CONSTRAINT t_desc_chk CHECK (Description IN (‘газета’,’книга’,’журнал’,’енциклопедія’,’методична література’)) );
2. Створення таблиці PUB_TITLE
CREATE TABLE PUB_TITLE (
PTitle integer CONSTRAINT title_prk PRIMARY KEY,
TitleText char(50) CONSTRAINT t_text_unq UNIQUE NOT NULL );
3. Створення таблиці PUBLISHING_HOUSE
CREATE TABLE PUBLISHING_HOUSE (
PubHID integer CONSTRAINT house_prk PRIMARY KEY,
Name char(50) NOT NULL,
City char(20) );
4. Створення таблиці AUTHOR
CREATE TABLE AUTHOR (
AuID integer CONSTRAINT author_prk PRIMARY KEY,
Surname char(30) NOT NULL,
Name char(20) NOT NULL,
FatherName char(25) );
5. Створення таблиці PUB_STYLE
CREATE TABLE PUB_STYLE (
PStyle integer CONSTRAINT style_prk PRIMARY KEY,
Description char(25) CONSTRAINT s_desc_unq UNIQUE NOT NULL,
CONSTRAINT s_desc_chk CHECK (Description IN (‘публіцистичний’,’ художній’,’ науковий’,’ офіційно-діловий’)) );
6. Створення таблиці PUBLICATION
CREATE TABLE PUBLICATION (
PubID integer CONSTRAINT pub_prk PRIMARY KEY,
PTitle integer CONSTRAINT p_title_frk REFERENCES PUB_TITLE(PTitle) ON DELETE SET NULL NOT NULL,
PStyle integer CONSTRAINT p_style_frk REFERENCES PUB_STYLE(PStyle) ON DELETE SET NULL,
Volume integer,
BibCode char(15) CONSTRAINT p_code_unq UNIQUE NOT NULL,
PubHID CONSTRAINT p_house_frk REFERENCES PUBLISHING_HOUSE(PubHID) ON DELETE SET NULL NOT NULL,
Year integer );
7. Створення таблиці CO_AUTHOR
CREATE TABLE CO_AUTHOR (
AuID integer CONSTRAINT co_author_frk REFERENCES AUTHOR(AuID) ON DELETE SET NULL NOT NULL,
PubID integer CONSTRAINT pub_frk REFERENCES PUBLICATION(PubID) ON DELETE CASCADE NOT NULL,
CONSTRAINT co_author_prk PRIMARY KEY (AuID,PubID));
8. Створення таблиці PUB_COVER
CREATE TABLE PUB_COVER (
CovID integer CONSTRAINT cover_prk PRIMARY KEY,
PubID integer CONSTRAINT cover_frk REFERENCES PUBLICATION(PubID) ON DELETE CASCADE NOT NULL,
Price number(10,2) CONSTRAINT price_chk CHECK (Price>0) NOT NULL,
BuyDate date NOT NULL);
9. Створення таблиці PLACE
CREATE TABLE PLACE (
PlaceID integer CONSTRAINT place_prk PRIMARY KEY,
RoomNo integer NOT NULL,
ShelNo integer NOT NULL,
ShelfNo integer NOT NULL);
10. Створення таблиці REGISTRATION
CREATE TABLE REGISTRATION (
PlaceID integer CONSTRAINT reg_place_frk REFERENCES PLACE(PlaceID) ON DELETE SET NULL NOT NULL,
CovID integer CONSTRAINT reg_cov_frk REFERENCES PUB_COVER(CovID) ON DELETE CASCADE NOT NULL,
PlaceDate date NOT NULL,
RemovDate date NOT NULL,
CONSTRAINT reg_prk PRIMARY KEY (PlaceID,CovID));
11. Створення таблиці READERS_TICKET
CREATE TABLE READERS_TICKET (
TicketID integer CONSTRAINT ticket_prk PRIMARY KEY,
Surname char(30) NOT NULL,
Name char(20) NOT NULL,
FatherName char(25),
Phone integer CONSTRAINT t_phone_unq UNIQUE,
Address char(50) NOT NULL);
12. Створення таблиці GIVING
CREATE TABLE GIVING (
TicketID integer CONSTRAINT giv_ticket_frk REFERENCES READERS_TICKET(TicketID) ON DELETE SET NULL NOT NULL,
PlaceID integer CONSTRAINT giv_place_frk REFERENCES PLACE(PlaceID) ON DELETE SET NULL NOT NULL,
GivDate date NOT NULL,
Term integer,
BackDate date NOT NULL,
CONSTRAINT giv_prk PRIMARY KEY (TicketID,PlaceID));
