Проектирование структуры базы данных. Нормализация таблиц

Автор работы: Пользователь скрыл имя, 29 Октября 2012 в 14:23, лабораторная работа

Описание

Цель работы: познакомить с понятием "концептуальная модель"; научиться правильно использовать принципы нормализации при проектиировании базы данных.
Постановка задачи
Пусть некоторая риелтерская контора "Аренда Minus" специализируется на заключении договоров аренды жилых помещений. Круг клиентов-арендаторов "Аренда Minus" не стабилен. Необходимо автоматизировать процесс регистрации и хранения договоров аренды.

Работа состоит из  1 файл

лаб по РУБД.doc

— 3.12 Мб (Скачать документ)

Лабораторная №1

Проектирование структуры базы данных. Нормализация таблиц.

Цель работы: познакомить с понятием "концептуальная модель"; научиться правильно использовать принципы нормализации при проектиировании базы данных.

Постановка задачи

Пусть некоторая риелтерская контора "Аренда Minus" специализируется на заключении договоров аренды жилых помещений. Круг клиентов-арендаторов "Аренда Minus" не стабилен. Необходимо автоматизировать процесс регистрации и хранения договоров аренды.

Проектирование  базы данных и процессов предметной области

  • Разработка концептуальной модели системы


 

 

 

 

 

Концептуальная  модель аренды объектов недвижимости

  • Проектирование базы данных

В соответствии с концептуальной моделью заключения договора аренды определим атрибуты отношений:

 

Отношение

Атрибут

Описание

Владелец

№Вл

Порядковый номер владельца

 

Вл

Владелец недвижимости

 

АдрВл

Адрес места жительства владельца

Договор

№Дог

Порядковый номер договора

 

Ар

Арендатор недвижимости

 

АдрАр

Адрес места жительства арендатора

 

№Вл

Порядковый номер владельца

 

АдрНд

Местоположение недвижимости

 

Дата

Дата заключения договора

Недвижимость

АдрНд

Местоположение недвижимости

 

Тип

Тип недвижимости

 

Пл

Ежемесячная арендная плата


Для данных отношений  имеют место следующие функциональные зависимости: №Вл®Вл, АдрВл; №Дог ® Ар, АдрАр, №Вл, АдрНд, Дата и АдрНд® Tun ® Пл. Представляя транзитивную функциональную зависимость как две полных: АдрНд®Tun и Tun®Пл, окончательно получим следующие отношения: Владелец(№Вл. Вл, АдрВл), Договор(№Дог, Ар, АдрАр, №Вл, АдрНд, Дата), Недвижимость(АдрНд. Тип) и Плата(Тип, Пл).

Обозначение таблиц и полей

Отношение

Таблица

Атрибут

Поле

Владелец

Owner

№Вл

Non

   

Вл

Ow

   

АдрВл

AdO

Договор

Lease

№Дог

NLease

   

Ар

Tn

   

АдрАр

AdT

   

АдрНд

AdR

   

Дата

LDate

Недвижимость

Realty

Тип

Typ

Плата

Rent

Пл

Rn


 

Рис. 2. Схема базы данных "Аренда Minus"

 

Лабораторная  №2

Создание серверной части приложения: алиас, файл базы данных, таблицы.

Цель  работы: познакомить с принципами и различными способами создания и изменения серверной части базы данных; приобрести навыки работы с утилитами сервера InterBase.

  • Создание "контейнера" базы данных

Серверная база данных —  это "набор" объектов (данные, триггеры, домены и т. д.), которые хранят в  файле. Этот "пустой" файл будем интерпретировать как "контейнер" базы данных.

Создадим базу данных EXMPL.gdb формата InterBase

  1. Создайте папку C:\dbApp\clSrv\Exmpl, где будет храниться база данных.
  1. Запустите утилиту IBConsole (Пуск/InterBase/IBConsole).
  1. Выделите мышью Local Server.



Выбор сервера в окне IBConsole

  1. Используя меню Server/Login, зарегистрируйтесь с паролем masterkey как администратор.

Примечание

Под администратором  баз данных понимают любого пользователя, который регистрируется под именем SYSDBA с паролем masterkey при условии, что этот пароль никто из них менять не будет.

  1. Выберите команду Database/Create Database
  2. Введите в поле Alias псевдоним – EXMPL.gdb.
  3. В поле File(s) введите имя файла базы данных, включая полный путь: C:\dbApp\clSRV\Exmpl\ Exmpl.gdb
  4. Для работы с символами национальной кодировки установите значение Default  Character  Set ПОЛЯ Options равным WIN1251.
  5. Завершите работу, щелкнув мышью на кнопке ОК.

Как только база данных будет  создана, IBConsole добавит псевдоним к дереву "сервер/базы данных.

Совет

Если вам  необходимо удалить базу данных из дерева "сервер/базы данных", то предварительно сделайте ее неактивной (Database/Disconnect), а затем удалите ее командой Database/Unregister. Удаление самой базы производят командой Database/Drop Database.

 

 

 

 

 

 

 

 

 

 

 

 

  • Создание алиаса для серверной базы данных
  1. Запустите SQL Explorer.
  1. Выберите на левой панели вкладку Databases.
  2. Активизируйте команду Object/New.
  3. В окне New-Database-Alias выберите  драйвер INTRBASE.
  4. Отредактируйте имя алиаса на  левой   панели. Пусть оно будет не INTRBASEI, a clsrvExmpl.
  5. Укажите на вкладке Definition,  которая находится на правой панели, путь к таблице. Для этого щелкните мышью на правой колонке, напротив SERVER NAME, а затем на кнопке выбора
  6. В появившемся окне Открытие файла укажите путь C:\dbApp\clSRV\Exmpl\ Exmpl.gdb.
  7. Выберите Pdox ansi Cyrillic в качестве LANGDRIVER.
  8. Щелкните  на  пункте USER NAME  и введите соответствующее имя пользователя InterBase — sysdba.
  9. Чтобы новый алиас вступил в силу, выберите команду Object/Apply.
  10.  
  • Cоздание серверной базы данных на основе настольной - Upsizing

Процесс создания серверной базы данных на основе настольной называют переносом унаследованных данных. Его производят с помощью утилиты Data Migration Wizard - Datapump. Но сначала следует создать алиас и таблицы настольной базы данных.

  1. Запустите   Data   Migration   Wizard   командой   Пуск/Программы/Borland Delphi 7/Datapump.
  2. В первом окне выберите алиас источника данных — dskExmpl.
  3. Во втором окне выберите алиас приемника данных — cisrvExmpl.
  4. В окне Select Tables to Move выберите все таблицы.
  5. Просмотрите, используя кнопку Modify Mapping Information For Selected Item, типы данных, к которым будут преобразованы поля настольной базы.
  6. Завершите процесс переноса данных, щелкнув мышью на кнопке Upsize.
  7. Просмотрите заключительный отчет и щелкните мышью на кнопке Done.
  • Удаление и модернизация баз данных

Для удаления базы данных предварительно следует  ее присоединить. Само удаление реализуют SQL-командой DROP DATABASE. При удалении базы уничтожается все, что с ней связано: таблицы, триггеры и т. д. Таблицу удаляют аналогично: DROP TABLE <имяТаблицы>.

Изменение структуры  таблицы после того, как она была создана:

ALTER TABLE  <имяТаблицы> <операция> [,   <  операция >   ...]

Например,

ALTER TABLE Owner

ADD Ow VARCHAR(IO) CHARACTER SET WIN1251,

DROP Own,

ADD  PRIMARY KEY   (NOwn)

Контрольные вопросы

  1. Справедливо ли определение "алиас — это условное обозначение пути к файлу базы Данных"?
  1. Что изменилось после переноса настольной базы данных в контейнер?
  2. Что произойдет после выполнения данной операции?

 

Лабораторная №3, №4

Визуальное проектирование структуры  базы данных: таблицы, индексы, условия  ссылочной целостности, взаимосвязи.

Цель работы: познакомить с принципами разработки и внедрения SQL-сценариев при проектировании структуры базы данных; научиться работе в графическом построителе базы данных

  • Разработка SQL-сценариев создания объектов базы данных

Объекты базы удаленной данных: таблицы, триггеры, домены и т.д. Сначала следует  удалить из Exmpl.gdb все таблицы, появившиеся после переноса их из настольной базы.

  1. Запустите утилиту Interactive SQL командой Tools/Interactive SQL главного меню IBConsole.
  2. Используя меню 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. В редакторе Блокнот набрать текст, представленный в листинге 1 и 2.
  1. Сохраните в файлы 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 ;


  • Выполнение скриптов:
  1. Запустите утилиту IBConsole.
  1. Зарегистрируйтесь на локальном сервере: Server/Login.
  2. Соединитесь с базой данных Exmpl.gdb, для чего выделите ее псевдоним и, используя меню, выполните команду Database/Connect As.
  3. Введите пароль, выберите character   Set равным WIN1251 и щелкните мышью на кнопке Connect.
  4. Запустите утилиту Interactive SQL (Tools/Interactive SQL).
  5. Выполните команду Query/Load Script.
  6. Укажите имя скрипта domains.sql и щелкните на кнопке Открыть.
  7. Исполните скрипт командой Query/Execute.
  8. Перейдите в окно IBConsole и убедитесь, что все домены созданы

Информация о работе Проектирование структуры базы данных. Нормализация таблиц