
- •Т.Е.Ильиных л.И.Шустова проектирование реляционных баз данных в нотациях idef1x
- •Содержание
- •Этапы проектирования базы данных
- •Инфологическое проектирование базы данных
- •Общие сведения
- •Описание бизнес компонентов и бизнес процессов
- •Сущность
- •Атрибут
- •Другие компоненты инфологической модели
- •Уровни представления данных
- •Этапы инфологического проектирования Инициирование проекта (фаза 0)
- •Определение сущностей (фаза 1)
- •Построение модели уровня сущностей (фаза 2)
- •Построение модели уровня ключей (фаза 3)
- •Построение полноатрибутной модели (фаза 4)
- •Нормализация данных
- •Даталогическое проектирование базы данных
- •Создание даталогической модели Общие сведения
- •Получение спецификаций внутренней схемы базы данных
- •Ограничения целостности
- •Результаты этапа даталогического проектирования
- •Имя таблицы
- •Основы нормализации отношений Общие сведения
- •Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
- •Нормальная форма Бойса – Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •Денормализация
- •Примеры проектирования баз данных различных бизнес приложений
- •Общие замечания
- •Проектирование базы данных "Школа" Постановка задачи
- •Инициирование проекта (фаза 0)
- •Определение множеств сущностей (фаза 1) Выделение множеств сущностей
- •Описание множеств сущностей
- •Пул сущностей
- •Построение модели уровня сущностей (фаза 2)
- •Концептуальная схема уровня сущностей
- •Построение модели уровня ключей (фаза 3) Разрешение неопределенных связей
- •Пул сущностей
- •Определение связей
- •Определение ключевых атрибутов и доменов
- •Изучаемый предмет/e5
- •Описание доменов
- •Описание атрибутов
- •Концептуальная схема
- •Построение полноатрибутной модели (фаза 4)
- •Описание доменов
- •Описание атрибутов
- •Явные ограничения целостности
- •Даталогическая модель
- •Проектирование базы данных "Обмен валюты" Постановка задачи
- •Инициирование проекта (фаза 0)
- •Определение множеств сущностей (фаза 1) Выделение множеств сущностей
- •Описание множеств сущностей
- •Пул сущностей
- •Фаза 2. Построение модели уровня сущностей Матрица связей
- •Матрица связей
- •Описание связей
- •Описание связей
- •Концептуальная схема уровня сущностей
- •Построение модели уровня ключей (фаза 3) Разрешение неопределенных связей
- •Пул сущностей
- •Определение связей
- •Определение ключевых атрибутов и доменов
- •Описание доменов
- •Описание атрибутов
- •Концептуальная схема
- •Построение полноатрибутной модели (фаза 4)
- •Описание доменов
- •Описание атрибутов
- •Явные ограничения целостности
- •Даталогическая модель
- •Проектирование базы данных "Торговля" Постановка задачи
- •Инициирование проекта (фаза 0)
- •Определение множеств сущностей (фаза 1) Выделение множеств сущностей
- •Описание множеств сущностей
- •Пул сущностей
- •Построение модели уровня сущностей (фаза 2)
- •Концептуальная схема уровня сущностей
- •Построение модели уровня ключей (фаза 3) Разрешение неопределенных связей
- •Пул сущностей
- •Описание связей
- •Определение ключевых атрибутов и доменов
- •Товар в списке цен/e5
- •Описание доменов
- •Описание атрибутов
- •Концептуальная схема
- •Построение полноатрибутной модели (фаза 4)
- •Описание доменов
- •Описание атрибутов
- •Явные ограничения целостности
- •Даталогическая модель
- •Список литературы
- •115409, Москва, Каширское ш., 31
Явные ограничения целостности
Из анализа поставленной задачи можно выделить следующие дополнительные ограничения целостности:
количество учеников в одном учебном классе (задаваемом годом обучения и группой) должно лежать в диапазоне от 3 до 20;
возраст ученика, включенного в класс, должен удовлетворять следующим правилам: в первом классе учатся дети в возрасте от 6 до 8 лет, во втором – от 7 до 9 и т.д.;
Рис. 4.3. Полноатрибутная концептуальная схема
на каждый предмет, изучаемый каким-либо классом, должен быть обязательно назначен учитель и, соответственно, каждый преподаваемый предмет должен обязательно изучаться каким-либо классом;
классы, соответствующие одному и тому же году обучения, должны иметь одинаковый список изучаемых предметов;
классным руководителем назначается один из учителей, проводящих занятия в данном классе по какому-либо предмету.
Даталогическая модель
В соответствии с приведенной структурой, внутренняя схема разрабатываемой базы данных представлена в табл. 4.10 – 4.15.
Таблица 4.10
Учитель/E3
Teacher
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Личный номер учителя |
IdTeacher |
Номер |
Integer |
Not null |
PK |
|
Фамилия |
LastName |
Имя |
Varchar (50) |
Not null |
AK1.1 |
|
Имя |
FirstName |
Имя |
Varchar (50) |
Not null |
AK1.2 |
|
Отчество |
SecondName |
Имя |
Varchar (50) |
Not null |
AK1.3 |
|
Дата приема на работу |
AdmitDate |
Дата |
Date |
Not null |
|
|
Статус учителя |
Status |
Статус |
Varchar (10) |
Null |
|
|
Ставка |
Rate |
Часть |
Decimal (5,2) |
Not null |
|
|
Описание таблицы на SQL:
Create table Teacher (
IdTeacher integer not null,
LastName varchar (50),
FirstName varchar(50),
SecondName varchar(50),
AdmitDate date not null,
Status varchar (10),
Rate decimal (5,2) not null,
Primary key (IdTeacher)
);
Commit;
Таблица 4.11
Класс/E2
Class
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Год обучения |
SchoolYear |
Номер |
Integer |
Not null |
PK.1 |
|
Группа |
Group |
Буква |
Varchar (1) |
Not null |
PK.2 |
|
Личный номер учителя |
IdTeacher |
Номер |
Integer |
Null |
FK |
Teacher; Set null |
Дата формирования |
CreateDate |
Дата |
Date |
Not null |
|
|
Категория |
Category |
Категория |
Varchar (20) |
Null |
|
|
Описание таблицы на SQL:
Create table Class (
SchoolYear integer not null,
Group varchar (1) not null,
IdTeacher integer,
CreateDate date,
Category varchar (20),
Primary key (SchoolYear, Group),
Foreign key (IdTeacher) references Teacher on delete set null
);
Commit;
Таблица 4.12
Ученик/E1
Pupil
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Личный номер ученика |
IdPupil |
Номер |
Integer |
Not null |
PK |
|
Фамилия |
LastName |
Имя |
Varchar (50) |
Not null |
AK1.1 |
|
Имя |
FirstName |
Имя |
Varchar (50) |
Not null |
AK1.2 |
|
Дата рождения |
Birthday |
Дата |
Date |
Not null |
AK1.3 |
|
Дата поступления в школу |
EnterDay |
Дата |
Date |
Not null |
|
|
Год обучения |
SchoolYear |
Номер |
Integer |
Not null |
FK1.1 |
Class, restrict |
Группа |
Group |
Буква |
Varchar (1) |
Not null |
FK1.2 |
Class, restrict |
Описание таблицы на SQL:
Create table Pupil (
IdPupil integer not null,
LastName varchar (50),
FirstName varchar(50),
Birthday date,
EnterDay date,
SchoolYear integer not null,
Group varchar (1) not null,
Primary key (IdPupil),
Foreign key (SchoolYear, Group) references Class on delete restrict
);
Commit;
Таблица 4.13
Предмет/E4
Subject
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Код предмета |
IdSubject |
Номер |
Integer |
Not null |
PK |
|
Название |
Name |
Название |
Varchar (20) |
Not null |
AK |
|
Название |
Name |
Название |
Varchar (20) |
Not null |
AK |
|
Тип предмета |
Type |
Тип |
Varchar (16) |
Not null |
|
|
Описание |
Description |
Описание |
Varchar (256) |
Null |
|
|
Описание таблицы на SQL:
Create table Subject (
IdSubject integer not null,
Name varchar (20) not null,
Type varchar(16) not null,
Description varchar (256),
Primary key (IdSubject)
);
Commit;
Таблица 4.14
Изучаемый предмет/E5
LearnSubject
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Год обучения |
SchoolYear |
Номер |
Integer |
Not null |
PK; FK1.1 |
Class; Restrict |
Группа |
Group |
Буква |
Varchar (1) |
Not null |
PK; FK1.2 |
Class; Restrict |
Код предмета |
IdSubject |
Номер |
Integer |
Not null |
PK; FK2 |
Subject; Restrict |
Количество уроков |
Qty |
Количество |
Integer |
Not null |
|
|
Описание таблицы на SQL:
Create table LearnSubject (
SchoolYear integer not null,
Group varchar (1) not null,
IdSubject integer not null,
Qty integer not null,
Primary key (SchoolYear, Group, IdSubject),
Foreign key (SchoolYear, Group) references Class on delete restrict,
Foreign key (IdSubject) references Subject on delete restrict
);
commit;
Таблица 4.15
Преподаваемый предмет/E6
TeachSubject
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Личный номер учителя |
IdTeacher |
Номер |
Integer |
Not null |
PK; FK1 |
Teacher; Restrict |
Код предмета |
IdSuibject |
Номер |
Integer |
Not null |
PK; FK2 |
Subject; Restrict |
Описание таблицы на SQL:
Create table TeachSubject (
IdTeacher integer not null,
IdSubject integer not null,
Primary key (IdTeacher, IdSubject),
Foreign key (IdTeacher) references Teacher on delete restrict,
Foreign key (IdSubject) references Subject on delete restrict
);
commit;
Кроме таблиц, можно привести и схему базы данных:
Ученик (Личный номер ученика, Фамилия (AK1), Имя (AK1), Дата рождения (AK1), Дата поступления в школу, Год обучения (FK1.1), Группа (FK1.2))
Класс (Год обучения, Группа, Личный номер учителя (FK), Дата формирования, Категория)
Учитель (Личный номер учителя, Фамилия (AK1), Имя (AK1), Отчество (AK1), Дата поступления на работу, Статус учителя, Ставка)
Предмет (Код предмета, Название (AK1), Тип предмета, Описание)
Изучаемый предмет (Год обучения (FK1), Группа (FK1), Код предмета (FK2), Количество уроков в неделю)
Преподаваемый предмет (Личный номер учителя (FK1), Код предмета (FK2))