Определение третьей нормальной формы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Определение третьей нормальной формы



 

Таблица, находящаяся в 3НФ должна отвечать всем требования 2НФ, а также ни одно из неключевых полей не идентифицируется при помощи другого неключевого поля, т.е. в таблице нет полей, которые не зависят от ключа.

3.1 Определим связи: т.к. один покупатель может встречаться в нескольких накладных, поэтому таблицы «ПОКУПАТЕЛИ» и «НАКЛАДНЫЕ» имеют связь «один-ко-многим» по полю «ПОКУПАТЕЛЬ» и, соответственно, одной накладной может соответствовать несколько товаров. Таблицы «НАКЛАДНЫЕ» и «ОТПУСК ТОВАР СО СКЛАДА» также имеют связь «один-ко-многим» по полю «№_НАКЛАДНОЙ».

Следовательно, связи между таблицами в ЗНФ

ОТПУСК ТОВАР СО СКЛАДА
КОД_ТОВАРА
КОД_ПОКУПАТЕЛЯ
КОЛИЧЕСТВО
ОБЩАЯ_СТОИМОСТЬ
№_НАКЛАДНОЙ

 

 

ПОКУПАТЕЛИ

КОД_ПОКУПАТЕЛЯ
ФАМИЛИЯ И ИНИЦИАЛЫ ПОКУПАТЕЛЯ
ГОРОД
АДРЕС

 

ТОВАРЫ

КОД_ТОВАРА
НАИМЕНОВАНИЕ_ТОВАРА
Е _ИЗМ
ЦЕНА_ЗА_ЕД

 

НАКЛАДНЫЕ
№_НАКЛАДНОЙ
ДАТА
КОД_ПОКУПАТЕЛЯ

 

 

Таблица «ОТПУСК ТОВАР СО СКЛАДА» не находится в 3НФ, т.к. неключевое поле «ОБЩАЯ_СТОИМОСТЬ» имеет зависимость от поля «КОЛИЧЕСТВО». Значение поля «ОБЩАЯ_СТОИМОСТЬ» может вычисляться, как значение поля «КОЛИЧЕСТВО» умноженное на значение поля «ЦЕНА_ЗА_ЕД» из таблицы «ТОВАРЫ». Исключение поля «ОБЩАЯ_СТОИМОСТЬ» из таблицы «ОТПУСК ТОВАР СО СКЛАДА» приводит БД к 3НФ (нормализованной БД (3НФ)).

 

Конечный результат:

 

ОТПУСК ТОВАР СО СКЛАДА

№_НАКЛАДНОЙ
КОД_ПОКУПАТЕЛЯ
КОД_ТОВАРА
КОЛИЧЕСТВО

 

 

ПОКУПАТЕЛИ

КОД_ПОКУПАТЕЛЯ
ФАМИЛИЯ И ИНИЦИАЛЫ ПОКУПАТЕЛЯ
ГОРОД
АДРЕС

 

ТОВАРЫ
КОД_ТОВ РА
НАИМЕНОВАНИЕ_ТОВАРА
ЕД_ИЗМ
Ц НА_ЗА_ЕД

 

НАКЛАДНЫЕ
№_НАКЛАДНОЙ
ДАТА
КОД_ПОКУПАТЕЛЯ

 


РЕАЛИЗАЦИЯ БАЗЫ ДАННЫХ

Лабораторная работа 3

 

ИЗУЧЕНИЕ ИНТЕРФЕЙСА И ФУНКЦИОНАЛЬНЫХ ВОЗМОЖНОСТЕЙ ПРОГРАММНОГО КОМПОНЕНТА DATABASE DESKTOP В DELPHI/LAZARUS/LAZARUS. СОЗДАНИЕ, РЕДАКТИРОВАНИЕ И ПРЕДСТАВЛЕНИЕ ТАБЛИЦ. СОЗДАНИЕ ПРОСТЕЙШИХ ПРИЛОЖЕНИЙ СИСТЕМЫ БАЗ ДАННЫХ ПРИ ПОМОЩИ СРЕДСТВА РАЗРАБОТКИ DELPHI/LAZARUS/LAZARUS

Цель: получить навыки создания таблиц при помощи утилиты Database Desktop. Получить навыки создания простейших приложений системы баз данных при помощи средства разработки DELPHI/LAZARUS/LAZARUS, а также установления связей Master-Detail между наборами данных при создании приложений баз данных.

Краткие теоретические сведения

Компонент TTable используется для установления связи между физическим файлом таблицы БД и другими невизуальными и визуальными компонентами приложения DELPHI/LAZARUS/LAZARUS.

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

Компонент TDBGrid служит для отображения и редактирования записей набора данных (и, следовательно, связанной с ним таблицы БД) при помощи табличной формы.

Для добавления записи необходимо использовать клавишу Insert на клавиатуре или, находясь на последней записи набора, использовать клавишу "стрелка вниз". Запоминание записи происходит после перехода на другую запись. Отказаться от сохранения записи можно, применив до перехода на другую запись клавишу Esc клавиатуры.

Для изменения записи следует переместить указатель текущей записи в нужное место и изменить нужное значение. Набор данных автоматически перейдет в режим редактирования. Отказаться от сделанных изменений можно, применив до перехода на другую запись клавишу Esc клавиатуры.

Для удаления записи следует установить на нее указатель текущей записи и нажать комбинацию клавиш Ctrl+Del.

Установление связей между записями одной или нескольких таблиц означает восстановление записей (кортежей) универсального отношения путем соединения (связывания) соответствующих записей набора таблиц, полученного при проектировании БД. При этом соединение (связывание) осуществляется с использованием данных, находящихся в полях для связи в этих таблицах. Связь записи ведущей таблицы (Master) устанавливается только с теми записи подчиненной таблицы (Detail), у которых значения в полях для связи равны друг другу. При этом могут быть установлены связи между записями вида "одна запись - одна запись" и "одна запись - много записей". Установление связей между записями одной или нескольких таблиц в СУБД или с помощью средства разработки означает, что указатели записей в этих таблицах должны перемещаться синхронно, в соответствии с установленными связями.

Ход выполнения работы

1. Используйте для построения простейшего приложения системы баз данных (СБД) в DELPHI/LAZARUS/LAZARUS набор таблиц формата Paradox. Для этого перенесите их в отдельный каталог.

2. Разместите на форме в DELPHI/LAZARUS/LAZARUS невизуальный компонент TTable из страницы Data Access палитры компонентов и установите при помощи Инспектора объектов значение его свойства DatabaseName, равное строковой константе, содержащей путь к каталогу с таблицами БД (при помощи диалогового окна или с клавиатуры). Установите значение свойства TableName в имя одной из таблиц БД - файлов с расширением *.DB (при помощи раскрывающегося списка). Назначьте имя компоненту в свойстве Name в виде tb<ИмяКомпонента> (по правилам венгерской нотации). Установите значение свойства Active в True. При этом будет установлена реальная связь между физическим файлом таблицы БД и компонентом TTable.

3. Разместите на форме в DELPHI/LAZARUS/LAZARUS невизуальный компонент TDataSource из страницы Data Access палитры компонентов и установите при помощи Инспектора объектов значение его свойства DataSet в имя компонента Ttable на вашей форме путем выбора из распахивающегося списка. Назначьте имя компоненту в свойстве Name в виде ds<ИмяКомпонента> (по правилам венгерской нотации).

4. Разместите на форме в DELPHI/LAZARUS/LAZARUS визуальный компонент TDBGrid из страницы Data Controls палитры компонентов и установите при помощи Инспектора объектов значение его свойства DataSource в значение имени компонента TDataSource вашей формы. Компонент TDBGrid служит для отображения и редактирования записей набора данных при помощи табличной формы. При правильно проделанных действиях и установленнном значении свойства Active компонента TTable в True (проверьте!) в табличной форме должно отобразиться содержимое записей таблицы еще на этапе проектирования приложения.

5. Осуществите запуск приложения и проверьте правильность взаимодействия всех компонентов на форме.

6. Выполните п.п. 1-5 Хода работы для остальных таблиц из набора таблиц БД. В итоге на вашей форме должны разместиться табличные формы для каждой таблицы БД, связанные с ними при помощи соответствующих невизуальных компонентов.

7. Определите таблицы, являющиеся ведущей (главной, или Master) и ведомой (подчиненной, или Detail) в устанавливаемых связях. Назначьте значение свойства MasterSource соответствующего компонента TTable для подчиненной таблицы в имя компонента TDataSource для главной таблицы. Затем нажмем кнопку в поле для значения свойства MasterFields компонента TTable для подчиненной таблицы, и в появившемся окне Field Link Designer выполним следующие действия: выберем в качестве текущего индекса индекс по полю для связи; в списках Detail Fields и Master Fields выберем поля двух таблиц, по которым осуществляется связь. Проверим сформированное в поле Joined Fields выражение, указывающее на сформированную связь.

8. Осуществите запуск приложения и проверьте синхронность перемещения указателей текущих записях в компонентах TDBGrid для связанных таблиц.

9. Повторите п.п. 7 и 8 для других связей между таблицами, которые необходимо установить в соответствии с индивидуальным заданием.

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

 



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 141; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.125.2 (0.007 с.)