Проектирование структуры базы данных. Нормализация таблиц
Лабораторная работа, 29 Октября 2012, автор: пользователь скрыл имя
Описание
Цель работы: познакомить с понятием "концептуальная модель"; научиться правильно использовать принципы нормализации при проектиировании базы данных.
Постановка задачи
Пусть некоторая риелтерская контора "Аренда Minus" специализируется на заключении договоров аренды жилых помещений. Круг клиентов-арендаторов "Аренда Minus" не стабилен. Необходимо автоматизировать процесс регистрации и хранения договоров аренды.
Работа состоит из 1 файл
лаб по РУБД.doc
— 3.12 Мб (Скачать документ)Лабораторная №1
Проектирование структуры базы данных. Нормализация таблиц.
Цель работы: познакомить с понятием "концептуальная модель"; научиться правильно использовать принципы нормализации при проектиировании базы данных.
Постановка задачи
Пусть некоторая риелтерская контора "Аренда Minus" специализируется на заключении договоров аренды жилых помещений. Круг клиентов-арендаторов "Аренда Minus" не стабилен. Необходимо автоматизировать процесс регистрации и хранения договоров аренды.
Проектирование базы данных и процессов предметной области
- Разработка концептуальной модели системы
Концептуальная модель аренды объектов недвижимости
- Проектирование базы данных
В соответствии с концептуальной моделью заключения договора аренды определим атрибуты отношений:
Отношение |
Атрибут |
Описание |
Владелец |
№Вл |
Порядковый номер владельца |
Вл |
Владелец недвижимости | |
АдрВл |
Адрес места жительства владельца | |
Договор |
№Дог |
Порядковый номер договора |
Ар |
Арендатор недвижимости | |
АдрАр |
Адрес места жительства арендатора | |
№Вл |
Порядковый номер владельца | |
АдрНд |
Местоположение недвижимости | |
Дата |
Дата заключения договора | |
Недвижимость |
АдрНд |
Местоположение недвижимости |
Тип |
Тип недвижимости | |
Пл |
Ежемесячная арендная плата |
Для данных отношений
имеют место следующие
Обозначение таблиц и полей
Отношение |
Таблица |
Атрибут |
Поле |
Владелец |
Owner |
№Вл |
Non |
Вл |
Ow | ||
АдрВл |
AdO | ||
Договор |
Lease |
№Дог |
NLease |
Ар |
Tn | ||
АдрАр |
AdT | ||
АдрНд |
AdR | ||
Дата |
LDate | ||
Недвижимость |
Realty |
Тип |
Typ |
Плата |
Rent |
Пл |
Rn |
Рис. 2. Схема базы данных "Аренда Minus"
Лабораторная №2
Создание серверной части приложения:
алиас, файл базы данных, таблицы.
Цель работы: познакомить с принципами и различными способами создания и изменения серверной части базы данных; приобрести навыки работы с утилитами сервера InterBase.
- Создание "контейнера" базы данных
Серверная база данных — это "набор" объектов (данные, триггеры, домены и т. д.), которые хранят в файле. Этот "пустой" файл будем интерпретировать как "контейнер" базы данных.
Создадим базу данных EXMPL.gdb формата InterBase
- Создайте папку C:\dbApp\clSrv\Exmpl, где будет храниться база данных.
- Запустите утилиту IBConsole (Пуск/InterBase/IBConsole).
- Выделите мышью Local Server.
Выбор сервера в окне IBConsole
- Используя меню Server/Login, зарегистрируйтесь с паролем masterkey как администратор.
Примечание
Под администратором баз данных понимают любого пользователя, который регистрируется под именем SYSDBA с паролем masterkey при условии, что этот пароль никто из них менять не будет.
- Выберите команду Database/Create Database
- Введите в поле Alias псевдоним – EXMPL.gdb.
- В поле File(s) введите имя файла базы данных, включая полный путь: C:\dbApp\clSRV\Exmpl\ Exmpl.gdb
- Для работы с символами национальной кодировки установите значение Default Character Set ПОЛЯ Options равным WIN1251.
- Завершите работу, щелкнув мышью на кнопке ОК.
Как только база данных будет создана, IBConsole добавит псевдоним к дереву "сервер/базы данных.
Совет
Если вам необходимо удалить базу данных из дерева "сервер/базы данных", то предварительно сделайте ее неактивной (Database/Disconnect), а затем удалите ее командой Database/Unregister. Удаление самой базы производят командой Database/Drop Database.
- Создание алиаса для серверной базы данных
- Запустите SQL Explorer.
- Выберите на левой панели вкладку Databases.
- Активизируйте команду Object/New.
- В окне New-Database-Alias выберите драйвер INTRBASE.
- Отредактируйте имя алиаса на левой панели. Пусть оно будет не INTRBASEI, a clsrvExmpl.
- Укажите на вкладке Definition, которая находится на правой панели, путь к таблице. Для этого щелкните мышью на правой колонке, напротив SERVER NAME, а затем на кнопке выбора
- В появившемся окне Открытие файла укажите путь C:\dbApp\clSRV\Exmpl\ Exmpl.gdb.
- Выберите Pdox ansi Cyrillic в качестве LANGDRIVER.
- Щелкните на пункте USER NAME и введите соответствующее имя пользователя InterBase — sysdba.
- Чтобы новый алиас вступил в силу, выберите команду Object/Apply.
- Cоздание серверной базы данных на основе настольной - Upsizing
Процесс создания серверной базы данных на основе настольной называют переносом унаследованных данных. Его производят с помощью утилиты Data Migration Wizard - Datapump. Но сначала следует создать алиас и таблицы настольной базы данных.
- Запустите Data Migration Wizard командой Пуск/Программы/Borland Delphi 7/Datapump.
- В первом окне выберите алиас источника данных — dskExmpl.
- Во втором окне выберите алиас приемника данных — cisrvExmpl.
- В окне Select Tables to Move выберите все таблицы.
- Просмотрите, используя кнопку Modify Mapping Information For Selected Item, типы данных, к которым будут преобразованы поля настольной базы.
- Завершите процесс переноса данных, щелкнув мышью на кнопке Upsize.
- Просмотрите заключительный отчет и щелкните мышью на кнопке Done.
- Удаление и модернизация баз данных
Для удаления базы данных предварительно следует ее присоединить. Само удаление реализуют SQL-командой DROP DATABASE. При удалении базы уничтожается все, что с ней связано: таблицы, триггеры и т. д. Таблицу удаляют аналогично: DROP TABLE <имяТаблицы>.
Изменение структуры таблицы после того, как она была создана:
ALTER TABLE <имяТаблицы> <операция> [, < операция > ...]
Например,
ALTER TABLE Owner
ADD Ow VARCHAR(IO) CHARACTER SET WIN1251,
DROP Own,
ADD PRIMARY KEY (NOwn)
Контрольные вопросы
- Справедливо ли определение "алиас — это условное обозначение пути к файлу базы Данных"?
- Что изменилось после переноса настольной базы данных в контейнер?
- Что произойдет после выполнения данной операции?
Лабораторная №3, №4
Визуальное проектирование структуры базы данных: таблицы, индексы, условия ссылочной целостности, взаимосвязи.
Цель работы: познакомить с принципами разработки и внедрения SQL-сценариев при проектировании структуры базы данных; научиться работе в графическом построителе базы данных
- Разработка SQL-сценариев создания объектов базы данных
Объекты базы удаленной данных: таблицы, триггеры, домены и т.д. Сначала следует удалить из Exmpl.gdb все таблицы, появившиеся после переноса их из настольной базы.
- Запустите утилиту Interactive SQL командой Tools/Interactive SQL главного меню IBConsole.
- Используя меню Query/Execute, удалите таблицы командой drop TABLE.
Определение типов данных таблиц
Назначая типы данных колонкам таблиц, можно использовать "свои" типы — домены.
Типы данных полей таблиц базы данных Exmpl.gdb Описание доменов базы данных
Имя таблицы |
Имя поля |
Тип |
Длина |
Деся- тичная часть |
Имя поля |
Тип |
Длина |
Значение по умолчанию |
Ограничения | |
Owner |
NOn |
SMALLINT |
dnNum |
SMALLINT |
- |
>0 | ||||
Ow |
CHAR |
10 |
dnOwTn |
CHAR |
10 |
нет | ||||
AdO |
CHAR |
20 |
dnAddrs |
CHAR |
20 |
нет | ||||
Lease |
NLease |
SMALLINT |
dnTyp |
CHAR |
20 |
1-к. квартира |
1-к.квартира 2-к. квартира дом | |||
Tn |
SMALLINT |
dnRn |
NUMERIC |
6,2 |
60 |
>0 | ||||
AdT |
CHAR |
20 |
dnDATE |
TIMESTAMP |
- |
<= "TODAY" | ||||
NOn |
SMALLINT |
|||||||||
AdR |
CHAR |
20 |
||||||||
LDate |
DATE |
|
||||||||
Realty |
AdR |
CHAR |
20 |
|||||||
Тур |
CHAR |
20 |
||||||||
Rent |
Тур |
CHAR |
20 |
|||||||
Rn |
NUMERIC |
6 |
2 |
Контрольное задание
Опишите типы полей (data type) InterBase-таблиц, используя ее справочную систему.
- SQL-скрипты создания доменов и таблиц
- В редакторе Блокнот набрать текст, представленный в листинге 1 и 2.
- Сохраните в файлы domains.sql и tables.sql SQL-операторы создания доменов и таблиц соответственно.
Листинг 1, SQL-операторы скрипта domains.sql |
Листинг .2. SQL-операторы скрипта tables.sql |
|
CREATE DOMAIN dnNum AS SMALLINT CHECK (VALUE > 0) NOT NULL; commit; CREATE DOMAIN dnOwTn AS CHAR(10) NOT NULL; commit; CREATE DOMAIN dnAddrs AS CHAR (20) NOT NULL; commit; CREATE DOMAIN dnTyp AS CHAR(20) DEFAULT ‘1-к. квартира' CHECK (VALUE IN (‘1-к. квартира', 2-к. квартира', 'дом')) NOT NULL; commit; CREATE DOMAIN dnRn AS NUMERIC(6,2) DEFAULT 60 CHECK (VALUE > 0) commit; CREATE DOMAIN dnDATE AS TIMESTAMP CHECK (Value <= "TODAY"); commit; |
CREATE TABLE Owner( NOn dnNum, Ow dnOwTn, AdO dnAddrs, PRIMARY KEY (NOn)) commit; CREATE TABLE Rent( Тур dnTyp, Rn dnRn, PRIMARY KEY (Тур)); commit; CREATE TABLE Realty( AdR dnAddrs, Тур dnTyp, PRIMARY KEY (AdR), FOREIGN KEY (Тур) REFERENCES Rent(Тур)); commit; CREATE TABLE Lease( NLease dnNum, NTn dnNum, NOn dnNum, AdR dnAddrs, Ldate dnDATE, PRIMARY KEY (NLease), FOREIGN KEY (NOn) REFERENCES Owner (NOn), FOREIGN KEY (AdR) REFERENCES Realty(AdR)); commit ; |
- Выполнение скриптов:
- Запустите утилиту IBConsole.
- Зарегистрируйтесь на локальном сервере: Server/Login.
- Соединитесь с базой данных Exmpl.gdb, для чего выделите ее псевдоним и, используя меню, выполните команду Database/Connect As.
- Введите пароль, выберите character Set равным WIN1251 и щелкните мышью на кнопке Connect.
- Запустите утилиту Interactive SQL (Tools/Interactive SQL).
- Выполните команду Query/Load Script.
- Укажите имя скрипта domains.sql и щелкните на кнопке Открыть.
- Исполните скрипт командой Query/Execute.
- Перейдите в окно IBConsole и убедитесь, что все домены созданы