- •1. Индивидуальное задание
- •2. Построение инфологической модели
- •3. Построение концептуальной модели базы данных
- •4. Построение физической модели и создание базы данных
- •5. Создание процедурных ограничений целостности
- •6. Создание типичных запросов к базе данных
- •6.1 Примеры операторов, которые записывают данные в таблицы
- •7.2 Примеры операторов на выборку данных из базы данных
- •7.3 Проверка ограничений целостности
3. Построение концептуальной модели базы данных
Пользуясь построенной ER-диаграммой, разработаем концептуальную модель данных. При разработке ER-диаграммы были выделены в отдельные сущности зачетки, аттестация, тип стипендии, ученая степень, занимаемая студентом должность.
В результате имеем 9 таблиц. Определим для них первичные ключи.
Таблицы University, Department, Chair, Lecturer имеют первичные ключи, имя которых было образовано путем добавления к имени сущности выражения “ID”. Ключи имеют тип INTEGER ввиду того, что объем данных, которые могут содержаться в них, будет очень велик.
Такие таблицы как WeekType, Time, ChairType, имеют первичный ключ, название которого образовано по правилу, описанному выше, типа SMALLINT, поскольку данные в этих таблицах не будут изменяться с большой динамикой и как правило значения, хранящиеся в них, будут внесены однажды и без изменений.
Таблица Discipline имеет первичный ключ DisciplineNumber типа VARCHAR(20) для хранения символьного кода дисциплины.
Таблица Lecture имеет составной ключ, из полей GroupName, LecturerID, TimeID, WeekTypeID, DayOfWeekNumber.
В результате имеем следующую концептуальную модель:
Рис.2 Концептуальная модель.
4. Построение физической модели и создание базы данных
В разрабатываемой базе данных содержится 9 таблиц. Приведем описание каждой таблицы базы данных. Скрипты создания базы данных содержатся в приложении.
# |
Название столбца |
Тип данных |
Ограничение |
Комментарии |
|
|
|
|
|
|
Discipline(Дисциплина) |
|||
1 |
DISCIPLINENUMBER |
VARCHAR (20) NOT NULL |
Первичный ключ |
|
2 |
NAME |
VARCHAR (250) NOT NULL |
|
Название дисциплины |
3 |
HOURS |
SMALLINT NOT NULL |
|
Количество часов |
|
|
|
|
|
|
WeekType(Тип недели) |
|||
1 |
WEEKTYPEID |
SMALLINT NOT NULL PRIMARY KEY |
Первичный ключ |
|
2 |
NAME |
VARCHAR (100) NOT NULL |
|
Название |
|
|
|
|
|
|
Time(Начало пары) |
|||
1 |
TIMEID |
SMALLINT NOT NULL PRIMARY KEY |
Первичный ключ |
|
2 |
HOUR |
SMALLINT NOT NULL |
|
Час начала пары |
3 |
MINUTE |
SMALLINT NOT NULL |
|
Минута начала пары |
|
|
|
|
|
|
ChairType(Тип кафедры) |
|||
1 |
CHAIRTYPEID |
SMALLINT NOT NULL PRIMARY KEY |
Первичный ключ |
|
2 |
NAME |
VARCHAR (250) NOT NULL |
|
Название типа кафедры |
|
|
|
|
|
|
University(Университет) |
|||
1 |
UNIVERSITYID |
INTEGER NOT NULL PRIMARY KEY |
Первичный ключ |
|
2 |
NAME |
VARCHAR (100) NOT NULL |
|
|
3 |
ACCREDITATIONLEVEL |
SMALLINT NOT NULL |
|
Уровень аккредитации |
4 |
CREATIONDATE |
DATE NOT NULL |
|
Дата создания |
5 |
ADDRESS |
VARCHAR (250) |
|
Адрес ВУЗА |
6 |
PHONE |
VARCHAR (40) |
|
Контактный телефон |
|
|
|
|
|
|
Department(Факультет) |
|||
1 |
DEPARTMENTID |
INTEGER NOT NULL PRIMARY KEY |
Первичный ключ |
|
2 |
UNIVERSITYID |
INTEGER NOT NULL |
Ссылка на таблицу University |
|
3 |
NAME |
VARCHAR (250) NOT NULL |
|
Название |
4 |
CREATIONDATE |
DATE NOT NULL |
|
Дата создания |
|
|
|
|
|
|
Chair(Кафедра) |
|||
1 |
CHAIRID |
INTEGER NOT NULL PRIMARY KEY |
Первичный ключ |
|
2 |
CHAIRTYPEID |
SMALLINT NOT NULL |
Ссылка на таблицу Chair |
|
3 |
DEPARTMENTID |
INTEGER |
Ссылка на таблицу Department |
|
4 |
NAME |
VARCHAR (250) NOT NULL |
|
Название |
5 |
CREATIONDATE |
DATE NOT NULL |
|
Дата создания |
|
|
|
|
|
|
Lecturer(Лектор) |
|||
1 |
LECTURERID |
INTEGER NOT NULL PRIMARY KEY |
Первичный ключ |
|
2 |
CHAIRID |
INTEGER NOT NULL |
Ссылка на таблицу Chair |
|
3 |
LASTNAME |
VARCHAR (70) NOT NULL |
|
Фамилия |
4 |
FIRSTNAME |
VARCHAR (70) NOT NULL |
|
Имя |
5 |
MIDDLENAME |
VARCHAR (70) NOT NULL |
|
Отчество |
6 |
ACADEMICDEGREENAME |
VARCHAR (120) NOT NULL |
|
Ученая степень |
7 |
POST |
VARCHAR (250) NOT NULL |
|
Занимаемая должность |
|
|
|
|
|
|
Lecture(Лекция) |
|||
1 |
GROUPNAME |
INTEGER NOT NULL PRIMARY KEY |
Первичный ключ |
|
2 |
LECTURERID |
VARCHAR(20) NOT NULL PRIMARY KEY |
Ссылка на таблицу Lecturer |
|
3 |
DISCIPLINENUMBER |
INTEGER NOT NULL |
Ссылка на таблицу Discipline |
|
4 |
TIMEID |
SMALLINT NOT NULL PRIMARY KEY |
Ссылка на таблицу Time |
|
5 |
WEEKTYPEID |
SMALLINT NOT NULL PRIMARY KEY |
Ссылка на таблицу WeekType |
|
6 |
DAYOFWEEKNUMBER |
SMALLINT NOT NULL PRIMARY KEY |
|
День недели |
7 |
AUDITORIUM |
VARCHAR (20) NOT NULL |
|
Номер аудитории |
8 |
BUILDINGNAME |
VARCHAR (20) NOT NULL |
|
Название корпуса |