Санкт-Петербургский
государственный технический университет
Факультет Технической
Кибернетики
Кафедра Компьютерных Систем и Программных Технологий
ЦИКЛ ЛАБОРАТОРНЫХ РАБОТ
Дисциплина: Базы данных
Выполнил студент гр. 5081/1 Перваков А.С.
Руководитель, ст. преподаватель Моисеев М.Ю.
"___ "_________ 2011 г.
Санкт-Петербург
2011
Лабораторная 1. SQL-DDL
1.1. Цели работы
Ознакомление с основами проектирования схемы БД, способами нормализации отношений в БД, языком описания сущностей и ограничений БД SQL-DDL.
1.2. Программа работы
1)Представить схему БД, соответствующую заданию (должно получиться не менее 7 таблиц)
2)Привести схему БД к 3НФ
3)Создание скрипта БД в соответствии с согласованной схемой (должны присутствовать первичные и внешние ключи, ограничения на диапазоны значений).
4)Создание скрипта, заполняющего все таблицы БД данными.
5)Выполнение SQL-запросов, изменяющих схему созданной БД по заданию преподавателя.
1.3. Выполнение работы
Задание: Военкомат.
ИС содержит информацию о призывниках различного возраста и статуса, текущем местонахождении призывников и личных делах, медицинских данных.
Диаграмма базы, сгенерированная в среде IBExpert, приведена на рисунке 1:
Рис. 1. Диаграмма базы данных военкомата.
Диаграмма содержит таблицы:
· people – таблица с призывниками
· delays – отсрочки
· reason – причины отсрочек
· summons – повестки
· status – справочник статусов
· status_history – история смены статусов для каждого призывника
· address – справочник адресов
· address_link – связующая таблица для М:М связи призывников с адресами. адреса могут быть двух типов(address_type): 1 - адрес регистрации, 2 - фактический
· professions – справочник медицинских должностей
· medics – медицинские работники
· medical_notes – таблица с записями обследований
Скрипт создания БД приведён в листинге 1.
Листинг 1:
CREATE DATABASE 'E:\Учеба СПБГПУ\КСПТ\Базы данных\VOEN.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET WIN1251 COLLATION WIN1251;
CREATE TABLE ADDRESS (
ID INTEGER NOT NULL,
STR VARCHAR(256) NOT NULL
);
CREATE TABLE ADDRESS_LINK (
PERSON_ID INTEGER NOT NULL,
ADDRESS_ID INTEGER NOT NULL,
ADDRESS_TYPE SMALLINT NOT NULL
);
CREATE TABLE DELAYS (
ID INTEGER NOT NULL,
PERSON_ID INTEGER NOT NULL,
DT_TO TIMESTAMP NOT NULL,
REASON_ID INTEGER
);
CREATE TABLE MEDICAL_NOTES (
ID INTEGER NOT NULL,
TEXT VARCHAR(1024) NOT NULL,
AUTHOR_ID INTEGER NOT NULL,
PERSON_ID INTEGER NOT NULL,
DT_NOTE TIMESTAMP NOT NULL
);
CREATE TABLE MEDICS (
ID INTEGER NOT NULL,
NAME VARCHAR(256) NOT NULL,
PROFESSION_ID INTEGER NOT NULL
);
CREATE TABLE PEOPLE (
ID INTEGER NOT NULL,
NAME VARCHAR(256) NOT NULL,
DT_BIRTH TIMESTAMP NOT NULL
);
CREATE TABLE PROFESSIONS (
ID INTEGER NOT NULL,
DESCRIPTION VARCHAR(64) NOT NULL
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.