Разбор проектирования БД «Успеваемость» § 15. Реляционная модель данных 1 Базы данных 11 класс
Проектирование БД «Успеваемость» Задание: Администрация Саратовской школы решила хранить сведения об успеваемости учеников в базе данных. Необходима информация об итоговой успеваемости по предметам для всех учеников. Кроме этого, нужна информация о возрасте, поле и месте проживания учеников. Помогите построить данную БД. 2 Базы данных 11 класс
Проектирование БД «Успеваемость» Решение: 1. Выпишем все необходимые данные в 1 таблицу: ФИО ученика Пред- мет Оцен -ка за 1 чет. Оцен -ка за 2 чет. Оцен- ка за 3 чет. Оцен -ка за 4 чет. годовая оценка возраст место проживания Иванов Иван Иванови ч математика Ул.Калини на, д.44, кв.15 Иванов Иван Иванови ч физик а Ул.Калини на, д.44, кв.15 3 Базы данных 11 класс
не хватает поля класс (т.к. название четверти будет повторяться у разных классов) Добавим суррогатный ключ (ID) Проектирование БД «Успеваемость» 4 Решение: 2. Проанализируем данную таблицу на предмет: все ли поля учтены Успеваемость ID ФИО ученика Предмет Оценка за 1 четверть Оценка за 2 четверть Оценка за 3 четверть Оценка за 4 четверть Оценка за год Класс Возраст Место проживания Базы данных 11 класс
Проектирование БД «Успеваемость» 5 Решение: 3. Выполним нормализацию для нашей таблицы Успеваемость ID ФИО ученика Предмет Оценка за 1 четверть Оценка за 2 четверть Оценка за 3 четверть Оценка за 4 четверть Оценка за год Класс Возраст Место проживания Базы данных 11 класс
Нормализация БД «Успеваемость» 6 1. Любое поле должно быть неделимым: поле ФИО нужно разделить Успеваемость ID Фамилия Имя Отчество Предмет Оценка за 1 четверть Оценка за 2 четверть Оценка за 3 четверть Оценка за 4 четверть Оценка за год Класс Возраст Место проживания Базы данных 11 класс
Нормализация БД «Успеваемость» 7 возраст и место проживания зависят от ФИО Ученики ID ученика Фамилия Имя Отчество Возраст Место проживания 2. Любое неключевое поле должно зависеть от ключа: Успеваемость ID Код ученика (FK) Предмет Оценка за 1 четверть Оценка за 2 четверть Оценка за 3 четверть Оценка за 4 четверть Оценка за год Класс N 1 Базы данных 11 класс
Нормализация БД «Успеваемость» 8 убираем названия периодов вводим справочники Предметы ID предмета Название Успеваемость ID Код ученика (FK) Код предмета (FK) Код периода (FK) Оценка Код класса (FK) N 1 3. Не должно быть одинаковых по смыслу полей: Периоды ID периода Название N 1 Ученики ID ученика Фамилия … N 1 Классы ID периода Название N 1 Базы данных 11 класс
Нормализация БД «Успеваемость» 9 Вместо поля возраст введем поле «дата рождения», т.к. иначе каждый год нам пришлось бы пересчитывать возраст. Годовая оценка также является вычисляемым полем, но эта возможность (хранить или не хранить ее в БД) остается на усмотрение пользователя при данном проектировании. 4. Не нужно хранить то, что может быть вычислено: Ученики ID ученика Фамилия Имя Отчество Дата рождения Место проживания Базы данных 11 класс
1 ID ученика Фамилия Имя Отчество Дата рождения Место проживания Нормализация БД «Успеваемость» Предметы ID предмета Название Успеваемость ID Код ученика (FK) Код предмета (FK) Код периода (FK) Оценка Код класса (FK) Периоды ID периода Название Классы ID класса Класс 10 Базы данных 11 класс