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

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

Описание

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

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

лаб по РУБД.doc

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

Аналогично  выполнить скрипт tables.sql

Примечание

Команда commit в приведенном скрипте позволяет завершать транзакцию, которую неявно стартует утилита Interactive SQL.

Контрольные задания

  1. SQL-операторы, создающие и определяющие объекты базы данных, называют операторами DDL (Data Definition Language, язык описания данных). Приведите, используя справочную систему InterBase, синтаксис оператора create table.
  2. Что означает предложение collate pxw_cyrl?

 

Лабораторная №5, №6

Клиентская часть: размещение не визуальных компонентов, соединение с БД.

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

Цель  работы: показать размещение компонент доступа к данным и компоненты отображения данных на листах различных типов приложения; грамотно использовать средства, события и методы компонентов;

  • Создание приложения в Delphi с использованием InterBase

Рассмотрим использование  компонент для создания простейшего  приложения. База Baza.gdb состоит из одной таблицы с полями: Ncar, marka, year, fio.

  1. Запустите Delphi, создайте приложение и модуль данных. В модуль данных поместите IBDatabase1, IBTransaction1, IBTable1, DataSource1.


 

 

 

 

 

 

 

 

 

Для удобства работы всем компонентам можно дать соответствующие  имена:

IBDatabase1

Dcars,

IBTransaction1

Tcars,

IBTable1

cars,

DataSource

 DScars


 

  1. В Инспекторе Объектов следует изменить свойства компонент – Dscars, cars, Tcars: 

Компонента

Свойство

Значение

DScars

DataSet

cars

cars

Database

Dcars

Transaction

Tcars

Tcars

DefaultDatabase

Dcars



  1. Двойным щелчком по компоненту Dcars вызываем окно Database Component Editor. Нажимаем кнопку Browse и находим папку, где находится созданная база (baza.gdb), открываем ее. Далее делаем все так, как показано ниже на рисунке и нажимаем ОК.

 

 Клиентская часть: размещение

 визуальных компонентов,

 отображения таблиц.

 

  1. На форму поместите DBGrid1, DBNavigator1, BitBtn1 и BitBtn2.

 

DBGrid1 - таблица для отображения  данных базы данных,

DBNavigator1 - навигатор для  управления курсором,

BitBtn1 - кнопка для активизации таблицы,

BitBtn2 - кнопка для закрытия  приложения.

 

Компонента

Свойство

Значение

DBGrid1

DataSourse

DM.DScars

DBNavigator1

   

cars

Active

True

DBGrid1

Visible

False

DBNavigator1

Enabled

False




 

 

 

 

 

 

 

 

В процедуре BitBtn1.Click (кнопка "показать таблицу") напишите:

DBGrid1.Visible:=True;

DBNavigator1.Enabled:=true;

В процедуре BitBtn2.Click (кнопка "закрыть приложение") напишите:

Form1.Close;

  1. Сохраните проект на диске С:, в папке IB и запустите проект на выполнение.
  2. При правильной работе программы у вас должно получится приложение, рисунок которого показан ниже:
  3. При нажатии на кнопку "показать таблицу", приложение должно принять вид:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Контрольное задание:

Создать приложение для базы EXMPL.gdb с использованием модуля данных и компонент для отображения и заполнения таблиц базы.

 

Лабораторная №7, №8

Запросы на добавление данных.

Запросы на редактирование и удаление данных.

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

  • Добавление данных

Используя скрипт insert.sql, добавьте данные в таблицы базы из Exmpl.gdb.

Код скрипта insert.sql

//Добавить, данные о хозяевах недвижимости  в таблицу Owner

INSERT INTO Owner VALUES (l, 'Иванов', 'Мира 36');

INSERT INTO Owner VALUES (2, 'Петров', 'Правды 2/36');

INSERT INTO Owner VALUES (3, 'Ивашко', 'Кирова 18');

commit;

//Добавить, данные  о стоимости аренды недвижимости  в таблицу Rent

INSERT INTO Rent VALUES ('2-к. квартира', 90);

INSERT INTO Rent VALUES ('1-к. квартира', 60);

INSERT INTO Rent VALUES ('дом', 1800);

commit;

//Добавить, данные о местоположении объекта  недвижимости в таблицу Realty

INSERT INTO Realty VALUES ('Кирова 118/2', '1-к. квартира');

INSERT INTO Realty VALUES ('Металлургов  56', 'дом');

INSERT INTO Realty VALUES ('Р-Корсакова 32/15', '2-к. квартира');

commit;

//Добавить, данные о местоположении объекта  недвижимости в таблицу Lease

INSERT INTO Lease VALUES (l, 'Петров', 'Правды 2/36', 1, 'Р-Корсакова 32/15', '01/01/01');

INSERT INTO Lease VALUES (2, 'Сидоров', 'Курская 18', 2, 'Кирова 118/2', '08/12/1999');

INSERT INTO Lease VALUES (3, 'Иванов', 'Мира 36', 3, 'Металлургов 56', '05/14/О2' ) ;

commit;

  • Редактирование данных
  1. Редактирование данных о владельцах (Owner) и дат заключения договоров (LDate).

Прежде чем редактировать запись, ее следует выбрать. Для этого:

Ход работы:

  1. Используя приведенный ниже скрипт, создайте немодифицируемый просмотр  sv_view__lease:

 

CREATE VIEW sv_View_Lease(NLease, Tn, Ow, Adr, LDate) AS

SELECT L.NLease, L.Tn, O.Ow, L.Adr, L.LDate

FROM Lease L, Owner 0

WHERE O.Non = L.NOn

  1. Начните новый Delphi-проект.
  2. Поместите на форму компоненты TDBNavigator, TButton и TDBGrid

Форма отображения данных договоров

  1. Присвойте СВОЙСТВУ Name формы значение fmViewLease.
  2. Создайте модуль данных с именем dmEdit и назначьте свойства компонентов такими, как показано в таблице.

 

Свойство компонентов  модуля данных

Компонент

Свойство

Значение

TDatabase

AliasName

clsrvExmpl

DatabaseName

Exmpl

Name

dbExmpl

Params

User Name=SYSDBA

PASSWORD=masterkey

LoginPrompt

False

Connected

True

TQuery

Name

quViewLease

DatabaseName

Exmpl

SQL

Select *

from sv_View_Lease

Active

True

TDataSourse

DataSet

quViewLease

Name

dsViewLease


 

  1. Создайте папку Edit и сохраните в ней модуль данных и форму fmViewLease под именами dmEditU.pas и View.pas, соответственно.
  2. Добавьте имя модуля данных в секцию implementation модуля View.
  3. Теперь, когда записи отображены, реализуем их редактирование. Поставьте в соответствие событию btEditclick кнопки Редактировать процедуру:

Код процедуры btEditciick

procedure TfmViewLease.btEditcliick(Sender: TObject);

var  Bookmark: TBookmark;

begin

Bookmark := dmEdit.quViewLease.GetBookmark; { установить закладку }

// Отобразить  модально форму fmEdit

if (fmEdit.ShowModal = mrOK) and

{Если нажата кнопка OK и набор данных quEdLease находится в состоянии dsEdit или dslnsert }

((dmEdit.quEdLease.State = dsEdit) or (dmEdit.quEdLease.State = dslnsert}) then

begin

try

(сохранить  текущее состояние набора данных}

dmEdit.quEdLease.Post;

{Показать текущее состояние набора данных}

dmEdit.quViewLease.Close;

dmEdit.quViewLease.Open;

finally

// Отобразить  текущей ту запись, которую отредактировали 

dmEdit.quViewLease.GotoBookmark(Bookmark);

dmEdit.quViewLease.FreeBookmark(Bookmark);

end;

end

else

dmEdit.quEdLease.Cancel;

end;

Итак, по нажатии  кнопки Редактировать модально отображается форма fmEdit. По нажатии кнопки ОК на этой форме сохраняются отредактированные данные набора dmEdit. quEdLease, отображаемые компонентами TDBLookupComboBox и TDBEdit.

 

 

 

Относительно  состояний dsEdit и dslnsert следует заметить, что когда приложение открывает набор данных, оно автоматически переводит его в режим dsBrowse. В любое другое состояние набор данных переходит из состояния Browse. Например, вызов методов INSERT или APPEND для набора данных изменяет состояние dsBrowse на dslnsert.

Два метода, связанные  со всеми наборами данных, могут  возвращать набор данных в состояние dsBrowse. Cancel заканчивает текущее действие и всегда возвращает набор данных в режим dsBrowse. Post пытается записывать изменения в таблицу базы данных и, при положительном исходе, также возвращает набор данных в режим dsBrowse. Если Post терпит неудачу, то текущее состояние остается прежним.

Диаграмма, приведенная на рисунке, иллюстрирует состояния набора данных и методы, которые инициируют их изменения. Описания состояний наборов данных приведены в таблице.

 

Значение

Состояние

Описание

DsInactive

Inactive

Набор данных закрыт. Данные не доступны

DsBrowse

Browse

Набор открыт. Можно просматривать записи.

DsEdit

Edit

Текущую запись можно редактировать

dsInsert

Insert

Позволяет добавлять  новые записи.


 

  1. Добавьте к модулю данных компоненты TQuery и TDataSource.
  2. Назначьте значения их свойств.

 

Компонент

Свойство

Значение

TQuery

Name

quEdLease

DatabaseName

Exmpl

DataSource

dsViewLease

SQL

SELECT Non, LDate

FROM Lease

WHERE Nlease=:NLease

RequestLive

True

Active

True

TDataSourse

DataSet

quEdLease

Name

dsEdLease


Примечание: Как видно из значений свойств компонентов, дата заключения договора — это значение параметра quEdLease. Другими словами, значение поля LDate, отображаемое на форме fmEdit, определяется данными текущей записи набора данных quViewLease.

  1. Редактирование в договоре фамилии владельца недвижимости.

Здесь есть "маленькая" тонкость. Дело в том, что в наборе quEdLease есть только данные о порядковом номере владельца, который хранится в таблице Lease, а не его фамилии. Но конечный пользователь вашей информационной системы не обязан знать соответствие между номерами и фамилиями владельцев. Поэтому мы должны подменить номер на соответствующую фамилию. И добавим еще одно удобство — редактирование заменой данными таблицы.

Ход работы:

  1. Добавьте к модулю данных компоненты TQuery и TDataSource.
  2. Назначьте значения их свойств.

 

Компонент

Свойство

Значение

TQuery

Name

quOwner

DatabaseName

Exmpl

SQL

SELECT Non, Ow

FROM Owner

RequestLive

True

Active

True

TDataSourse

DataSet

quOwner

Name

dsOwner


 

 

  1. Определите свойства компонентов формы.

Компонент

Свойство

Значение

TDBLookupComboBox

DataField

NOn

DatabaseSource

dmEdit.dsEdLease

KeyField

NOn

ListField

Ow

ListSource

dmEdit.dsOwner

TDBEdit

Name

DBEdit1

DataField

LDate

DatabaseSource

dmEdit.dsEdLease

TButton

Caption

OK

 

ModalResult

mrOk

TButton

Caption

Отмена

 

ModalResult

mrCancel

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