Функциональные зависимости между атрибутами
В этом разделе анализируются функциональные зависимости между атрибутами. Например, сущность «Сотрудники» описывается атрибутами, представленными в таблице 1. Функциональную зависимость атрибута Y от X обозначают с помощью записи: X®Y. В таблице 1 показана зависимость всех атрибутов от атрибута «tabelnii_nomer».
Таблица 1 – Функциональные зависимости между атрибутами сущности «сотрудники».
Наименование атрибута | Функциональные зависимости |
tabelnii_nomer; fio; inn; kod_doljnosti; uchenaya_stepen; kod_obrazovan; semeinoe_polojenie; kolvo_detei; kod_formi_trud_uch; god_otchet; kod_kafedri; shifr_temi. |
Таблица 2 – Функциональные зависимости между атрибутами сущности
«должности».
Наименование атрибута | Функциональные зависимости |
kod_doljnosti; doljnost. |
Таблица 3 – Функциональные зависимости между атрибутами сущности «образование»
Наименование атрибута | Функциональные зависимости |
kod_obrazovan; obrazovanie. |
Таблица 4 – Функциональные зависимости между атрибутами сущности «форма трудового участия»
Наименование атрибута | Функциональные зависимости |
kod_formi_trud_uch; forma_trud_uch. |
Таблица 5 – Функциональные зависимости между атрибутами сущности «факультеты»
Наименование атрибута | Функциональные зависимости |
kod_fakulteta; nazv_fakulteta. |
Таблица 6 – Функциональные зависимости между атрибутами сущности «кафедры»
Наименование атрибута | Функциональные зависимости |
kod_kafedri; nazv_kafedri; kod_fakulteta. |
Таблица 7 – Функциональные зависимости между атрибутами сущности «темы»
Наименование атрибута | Функциональные зависимости |
shifr_temi; nazvanie_temi; godovoi_objem_fin_temi. |
Выбор ключей
Первичный ключ используется в Visual Fox Pro при определении отношений между таблицами и условий целостности данных.
Первичным ключом (ключом отношения, ключевым атрибутом) называется атрибут отношения, однозначно идентифицирующий каждый из его кортежей. Например, в отношении «должности» (kod_doljnosti, doljnost) ключевым является атрибут «kod_doljnosti». Ключ может быть составным (сложным), т.е. состоять из нескольких атрибутов.
Каждое отношение обязательно имеет комбинацию атрибутов, которая может служить ключом. Ее существование гарантируется тем, что отношение это множество, которое не содержит одинаковых элементов – кортежей. Т.е. в отношении нет повторяющихся кортежей, а это значит, что по крайней мере вся совокупность атрибутов обладает свойством однозначной идентификации кортежей отношения. Во многих СУБД допускается создавать отношения, не определяя ключи.
Возможны случаи, когда отношение имеет несколько комбинаций атрибутов, каждая из которых однозначно определяет все кортежи отношения. Все эти комбинации атрибутов являются возможными ключами отношения. Любой из возможных ключей может быть выбран как первичный.
Ключи обычно используют для достижения следующих целей:
- исключение дублирование значений в ключевых атрибутах (остальные атрибуты в расчет не принимаются);
- упорядочения кортежей. Возможно упорядочение по возрастанию или убыванию значений всех ключевых атрибутов, а также смешанное упорядочение (оп одним - возрастание, а по другим – убывание);
- ускорение работы к кортежам отношения;
- организация связанных таблиц [8].
Реляционная модель накладывает на внешние ключи ограничение для обеспечения целостности данных, называемое ссылочной целостностью. Это означает, что каждому значению внешнего ключа должны соответствовать строки в связываемых отношениях.
Поскольку не всякой таблицы можно поставить в соответствие отношение, приведем условия, выполнение которых позволяет таблицу считать отношением.
- Все строки таблицы должны быть уникальны, т.е. не может быть строк с одинаковыми первичными ключами.
- Имена столбцов таблицы должны быть различны, а значения их простыми, т.е. недопустима группа значений в одном столбце одной строки.
- Все строки одной таблицы должны иметь одну структуру, соответствующую именам и типам столбцов.
- Порядок размещения строк в таблице может быть произвольным.
Наиболее часто таблица с отношением размещается в отдельном файле.
В некоторых СУБД одна отдельная таблица (отношение) считается базой данных. В других СУБД база данных может содержать несколько таблиц.
Таблица данных обычно хранится на магнитном диске в отдельном файле операционной системы, поэтому по ее именованию могут существовать ограничения. Имена полей хранятся внутри таблиц. Правила их формирования определяются СУБД, которые, как правило, на длину полей и используемый алфавит серьёзных ограничений не накладывают.
Если задаваемое таблицей отношение имеет ключ, то считается, что таблица тоже имеет ключ, и ее называют ключевой или таблицей с ключевыми полями.
У большинства СУБД файл таблицы включает управляющую часть (описание типов полей, имена полей другая информация) и область размещения записей.
Файл таблицы включает управляющую часть (описание типов полей, имена полей и другая информация) и область размещения записей.
К отношениям можно применять систему операций позволяющих получать одни отношения из других.
Первичному ключу родительской сущности, обычно соответствует несколько записей дочерней или подчиненной [9].
Разработанная база данных «Научно-исследовательская работа» состоит из 7 таблиц, все они обладают первичными ключами:
1. kod_doljnosti; 2. kod_obrazovan;
3. kod_formi_trud_uch; 4. tab_no_sot;
5. kod_fak 6. kod_kaf
7. shifr_temi
4.3 Определение отношений между таблицами
В Visual FoxPro можно устанавливать постоянные отношения между таблицами. При определении отношений одна таблица является родительской, а другая дочерней. Для родительской таблицы должен быть определен первичный ключ или ключ-кандидат, а для дочерней - индекс для связи с родительской таблицей.
Например, для родительской таблицы «факультеты» первичным ключом является атрибут kod_fakulteta, а для дочерней таблицы «кафедры» kod_fakulteta является индексом для связи с родительской таблицей.