geum.ru - только лучшие рефераты!

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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



ны&3Что такое физика&1-2Основные физически величины&3

Как видим, этот набор отношений так же не содержит неполных функциональных зависимостей, и поэтому эти отношения находятся во второй нормальной форме.

Но для корректной работы нашей базы данных нам не обходимо привести отношения к третьей нормальной форме:

Отношение находится в третьей нормальной форме тогда и только тогда, когда оно находится во второй нормальной форме и не содержит транзитивных зависимостей.

Для этого приведем существующие наборы отношений к следующему виду:

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

Код ученика ->Фамилия, Имя, Отчество, Дата рождения, Адрес

Код предмета ->Название предмета

Код ученика ->Код предмета ->Дата проведения занятия ->Оценка

Дата проведения занятия ->Код предмета->Тема, Домашнее задание

Где Код ученика, Код предмета, Дата проведения занятия являются первичными ключами, таким образом имея данный набор отношений получаем следующий набор таблиц:

Ученики

Код ученика*ФамилияИмяОтчествоДата рожденияАдрес1ГалановМихаилСергеевич11.04.1998Комсомольская 352ДаниловСергейГеннадьевич18.05.1998Пер.Солничный1/23БордовскийАлексейВладимирович05.08.1998Набережная 1

Описание структуры:

Предмет

Код Предмета*Название предметаInf_7ИнформатикаFiz_7Физика

Описание структуры:

Отметка

Код ученика*Код предмета*Дата проведенияОценка1Fiz_703,09,1132Fiz_703,09,1153Fiz_703,09,114

Описание структуры:

Тематический план

Дата занятия*Код предмета*Тема занятияДомашнее задание03,09,11Inf_7Что такое информатика&1-203,09,11Fiz_7Что такое физика&1

Описание структуры:

Теперь необходимо удостовериться, что при естественном соединении мы не потеряем ни одной строки и не получим лишних кортежей. (Фамилия, Имя, Отчество, Дата рождения, Адрес, Название предмета, Дата проведения занятия, Тема занятия, Оценка, Домашнее задание). Полученный набор отношений находится в третьей нормальной форме.

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

Установим связи между полученными таблицами:

Создание приложения для работы с базой данных TTable и TQuery

и TQuery являются основными компонентами, используемыми при программировании приложений баз данных (TStoredProc не в iет, и без него можно прекрасно обойтись, вызывая процедуры через select или execute в компоненте TQuery). TTable предоставляет доступ как к таблицам, а TQuery позволяет выполнять произвольные запросы. Если с TQuery все понятно - он выполняет тот запрос, который написан в свойстве TQuery.SQL - то TTable скрывает очень много подробностей своей работы от программиста. Без SQL Monitor увидеть все тонкости невозможно (если кто не знает - SQL Monitor находится в меню Database).

Итак, запустите Delphi, откройте SQL Monitor, положите на форму компонент TDatabase, подсоединитесь к серверу, затем положите компонент TTable, присоедините его к алиасу TDatabase и выберите любую таблицу из списка (свойство TableName). Переключитесь на SQL Monitor, сотрите все что там появилось, переключитесь обратно, и включите TTable.Active:=True; Смотрим в SQL Monitor (лог с самого начала):

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

второй запрос выбирает список полей выбранной таблицы, их названий, типов, условий проверки и т.п.

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

четвертый запрос почти повторяет второй, и выбирает информацию о полях - условия проверки, "вычисляемость" поля, допустимость NULL и прочее.

собственно, пятый запрос открывает таблицу, формируя запрос SELECT FIELD1, FIELD2, ... FROM TABLE ORDER BY PK_FIELD ASC.

Заметьте, что подобные запросы выполняются каждый раз при открытии таблицы (любой) компонентом TTable. Перечитывания этих данных можно избежать, если включить у используемого алиаса параметр ENABLE SCHEMA CACHE. При этом iитанную первый раз информацию BDE размещает на диске в указанном каталоге (SCHEMA CACHE DIR) в специальном файле, кэширует информацию для SCHEMA CACHE SIZE количества таблиц, и держит эту информацию в кэше в течение SCHEMA CACHE TIME секунд (если -1, то вечно). Если структуры таблиц закэшированы, то при их изменении на сервере (например, добавили новое поле) приложение будет работать со старой структурой, что может вызвать серьезные проблемы в работе приложения. SCHEMA CACHE нужно использовать только тогда, когда структура базы данных определена окончательно и не изменяется. Если все же очень сильно хочется использовать кэширование структур таблиц, то не забывайте правильно установить параметр SCHEMA CACHE TIME. Или при первом за день подключении приложения к серверу сначала кэширование структур можно выключить, отсоединиться, включить и подсоединиться снова - таким образом в самом начале работы кэш структур таблиц будет создан, и будет использоваться в течение дня.

Примечание: параметры SCHEMA CACHE не имеют абсолютно никакого отношения к механизму Cached Updates или к кэшированию данных.

Вернемся к запросу, которым TTable открыл таблицу. В конце запроса стоит указание поря