Задание: спроектировать базу данных зоопарка.
В базе данных должна храниться информация о работниках зоопарка (Фамилия, Имя, Отчество, Дата рождения, Должность, зарплата, Фотография), сделанных этим работникам прививках, клеток, которые они обслуживают. Далее должна храниться информация о животных, содержащихся в зоопарке (Кличка, Вид, Название животного, Состояние здоровья, Дата Рождения, Фотография животного), о сделанным им прививкам и о клетках, имеющихся в наличии в зоопарке (Высота, Длина, Ширина, Прочность, Изготовитель).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Код работника Фамилия работника Имя работника Отчество работника Адрес работника Дата рождения работника Зарплата работника Фотография работника Код прививки Название прививки Периодичность прививки Номер записи прививки Дата прививки Код прививки Код животного Кличка животного Вид животного Название животного Состояние здоровья животного Дата рождения животного Фотография животного Код должности Название должности Минимальный оклад Номер клетка Длина Ширина Высота Прочность код изготовителя Код изготовителя Названия изготовителя Телефон изготовителя Адрес изготовителя |
Диаграмма функциональных зависимостей:
Возможные ключи | Детерминант |
Код работника, Код прививки
Код животного, Код прививки |
Код работника, Код прививки
Код животного, Код прививки Код работника Код прививки работникам Код животного Код прививки животному Код должности Код изготовителя |
отношение не находится в нормальной форме Бойса — Кодда, поскольку не все детерминанты являются возможными ключами. Для приведения отношения в нормальную форму Бойса — Кодда необходимо осуществить следующие изменения:
Получим следующие таблицы:
1 2 3 4 5 6 7 8 9 |
РАБОТНИК(Код работника, Фамилия работника, Имя работника, Отчество работника, Фотография работника, Адрес работника, Зарплата работника) ДОЛЖНОСТЬ(Код должности, Название должности, Минимальный оклад) ДОЛЖНОСТИ(Код работника, Код должности) ЖИВОТНОЕ(Код животного, Кличка животного, Название животного, Вид животного, Дата рождения, Состояние здоровья, Фотография животного, Код клетки) ПРИВИВКИ (Код прививки, Название прививки, Периодичность) ЖУРНАЛ_ПРИВИВОК (Код работника, Код животного. Код прививки, Дата прививки) КЛЕТКИ(Код клетки, Длина, Ширина, Высота, Прочность, Код изготовителя) ОБСЛУЖИВАНИЕ_КЛЕТОК(Код работника, Код клетки) ИЗГОТОВИТЕЛЬ(Код изготовителя, Телефон изготовителя, Название изготовителя, Адрес изготовителя) |
В таблице ЖУРНАЛ_ПРИВИВОК если прививка сделана животному, то поле Код работника=0, а если работнику, то Код животного =0.
ERD — метод
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#Код работника Фамилия работника Имя работника Отчество работника Адрес работника Дата рождения работника Зарплата работника Фотография работника #прививки Название прививки Периодичность прививки # записи прививки Дата прививки Код прививки #животного Кличка животного Вид животного Название животного Состояние здоровья животного Дата рождения животного Фотография животного #должности Название должности Минимальный оклад #клетка Длина Ширина Высота Прочность код изготовителя #изготовителя Названия изготовителя Телефон изготовителя Адрес изготовителя |
Диаграмма:
Получим следующие таблицы:
1 2 3 4 5 6 7 8 9 |
РАБОТНИК(Код работника, Фамилия работника, Имя работника, Отчество работника, Фотография работника, Адрес работника, Зарплата работника) ДОЛЖНОСТЬ(Код должности, Название должности, Минимальный оклад) ДОЛЖНОСТИ(Код работника, Код должности) ЖИВОТНОЕ(Код животного, Кличка животного, Название животного, Вид животного, Дата рождения, Состояние здоровья, Фотография животного, Код клетки) ПРИВИВКИ (Код прививки, Название прививки, Периодичность) ЖУРНАЛ_ПРИВИВОК (Код работника, Код животного. Код прививки, Дата прививки) КЛЕТКИ(Код клетки, Длина, Ширина, Высота, Прочность, Код изготовителя) ОБСЛУЖИВАНИЕ_КЛЕТОК(Код работника, Код клетки) ИЗГОТОВИТЕЛЬ(Код изготовителя, Телефон изготовителя, Название изготовителя, Адрес изготовителя) |
В таблице ЖУРНАЛ_ПРИВИВОК если прививка сделана животному, то поле Код работника=0, а если работнику, то Код животного =0.
В результате применения двух методов были получены одинаковые таблицы.