P>
Виконавши операції щодо нормалізації БД, приступаємо до виконання фізичного проектування бази даних.
2.4 Фізичне проектування
Після даталогіческого проектування запускаємо додаток адміністрування баз даних Firebird IBExpert і, використовуючи функції закладені в цьому програмному засобі, створюємо і реєструємо в системі нову базу даних Firebird Бібліотека raquo ;. Створення бази даних інсталює інфраструктуру, необхідну для початку створення об'єктів. Первинним об'єктом для постійного зберігання даних в базі даних є таблиця.
Приступаючи до створення таблиць, передбачається, що вже виконано аналіз даних і підготовлена ??модель, а також є абсолютно чітке уявлення про структурах головних таблиць та їхні взаємини. Виходячи з даних, отриманих при виконанні інфологіческого і даталогіческого проектування, спроектував таблиці і поля бази даних. Визначаємо ключові поля і поля Not null (див. Таблиця 1).
У цій базі даних для визначення типів даних стовпців таблиць використовуються домени (див. Таблиця 2). Домени в Firebird схожі з концепцією типи даних, визначені користувачем raquo ;. Хоча й неможливо створити новий тип даних, але можна задати набір атрибутів з одним з існуючих типів даних і присвоїти йому ідентифікатор домену. Після цього можна використовувати домен як параметр типу даних для визначення стовпців будь-якої таблиці. Переваги інкапсуляції визначення даних очевидні, оскільки в Firebird відсутній логічний, грошовий і деякі інші типи даних, але, використовуючи домени, можна створити заміну цим типам даних.
Таблиця 1. ER - модель БД.
Ім'я табліциІмя поляТіпДлінаДесятічная частьІмя доменаbibliotekorNomer_bibliotekoryaSMALLINTD_INDEXTYPENomer_otdelaSMALLINTD_INDEXTYPEFio_bibliotekoryaVARCHAR45D_NAMEchitatelNomer_chitatelyaSMALLINTD_INDEXTYPEFamiliya_4itatelyaVARCHAR45D_NAMEImya_chitatelyaVARCHAR45D_NAMEadresVARCHAR40D_ADREStelefonVARCHAR15D_TELKnigiNomer_knigiSMALLINTD_INDEXTYPENomer_otdelaSMALLINTD_INDEXTYPEnazvanie_knigiVARCHAR45D_NAMEkol_vo_stranicSMALLINTD_INDEXTYPEavtorVARCHAR45D_NAMEidSMALLINTD_INDEXTYPENew_tableNomer_knigiSMALLINTD_INDEXTYPENomer_otdelaSMALLINTD_INDEXTYPEnazvanie_knigiVARCHAR45D_NAMEkol_vo_stranicSMALLINTD_INDEXTYPEavtorVARCHAR45D_NAMEizmenVARCHAR45D_NAMEdata_trDATED_DATETYPEotdel_knignazvanie_otdelaVARCHAR45D_NAMENomer_otdelaSMALLINTD_INDEXTYPEkol_vo_knigSMALLINTD_INDEXTYPEtelefonVARCHARD_TELnomer_bibliotekoryaSMALLINTD_INDEXTYPEVida4a_knigNomer_zapisiSMALLINTD_INDEXTYPENomer_knigiSMALLINTD_INDEXTYPENomer_bibliotekoryaSMALLINTD_INDEXTYPENomer_4itatelyaSMALLINTD_INDEXTYPEdata_vyda4i_knigiDATED_DATETYPEdata_vozvrata_knigiDATED_DATETYPE
Таблиця 2. Список доменів.
Ім'я доменаТипДлиннаОграниченияD_INDEXTYPESMALLINTVALUEgt;0D_NAMEVARCHAR45D_ADRESVARCHAR40D_TELVARCHAR15D_DATETYPEDATEVALUElt;=laquo;TODAYraquo;
Тепер, коли опрацьовані всі теоретичні аспекти створення бази даних, можна приступати до програмування доменів і таблиць. Для цього, запустивши IBExpert, завантажуємо SQL редактор і вибираємо меню Tools- gt; SQL Editor.
У вікні пишемо скрипт для створення домену D_NAME:
CREATE DOMAIN D_NAME AS (45) CHARACTER SET WIN1251 NULL
COLLATE WIN1251
Подібним чином створив домени D_INDEXTYPE, D_ADRES, D_DATETYPE, D_TEL. (див. Додаток 1).
Створивши домени, приступаємо до створення таблиць. Всього в БД буде створено шість таблиць. Таблиці мають зв'язку, реалізовані за допомогою первинних і вторинних ключових полів. Крім зв'язків ці поля також впливають на цілісність даних.
Засобами IBExpert створюємо таблицю chitatel і вказуємо ключові поля, в цій таблиці будуть зберігатися дані про типи меблів:
CREATE TABLE CHITATEL (_CHITATELYA D_NAME/* D_NAME=VARCHAR (45) NOT NULL * /, _ CHITATELYA D_NAME/* D_NAME=VARCHAR (45) NOT NULL * /, D_NAME/* D_NAME= VARCHAR (45) NOT NULL * /, D_NAME/* D_NAME=VARCHAR (45) NOT NULL * /, _ DOMA D_INDEXTYPE/* D_INDEXTYPE=INTEGER NOT NULL * /, D_TEL/* D_TEL=VARCHAR (15) * /, _ CHITATELYA D_INDEXTYPE NOT NULL/* D_INDEXTYPE=INTEGER NOT NULL */
);
-Завдання первинного ключа
ALTER TABLE CHITATEL ADD PRIMARY KEY (NOMER_CHITATELYA);
Використовуючи комбінацію генератора з тригером, реалізуємо автоінкрементне поле для таблиці chitatel
-Створення генератора
CREATE GENERATOR GEN_ID _ CHITATEL;