
- •Тема 1 Проектирование базы данных
- •Тема 2 Проектирование структуры таблиц при использовании языка Transact-sql
- •Тема 3 Проектирование структуры таблиц при использовании case-средства erwin и консоли sql Server Management Studio
- •Тема 4 sql Server Management Studio
- •Тема 5 Выборка данных из бд
- •Тема 6 Объединение таблиц
- •Тема 7 Вложенные запросы
- •Тема 8 использование оператора exists, case, any и all
- •Тема 9 Запросы на добавление, удаление и изменение записей. Работа с тригирами и транзакциями
- •Тема 10 Проектирование клиентской части приложения
- •Тема 11 Создание отчетов
- •Тема 12 Создание справки и инсталляционного пакета
Тема 3 Проектирование структуры таблиц при использовании case-средства erwin и консоли sql Server Management Studio
Задание 1
Выполните обратное проектирование вашей базы данных. Просмотрите графическую структуру созданных таблиц. Сохраните в отчете по практике. Должна получиться следующая схема, если все было правильно выполнено:
Результат выполнения задания рисунок 3.19
Рисунок 3.19 Схема БД
Задание 2
Создайте отчет о структуре таблиц в HTML формате следующего вида:
Результат выполнения задания рисунок 3.20
Рисунок 3.20 Oтчет о структуре таблиц в HTML формате
Задание 3
Создайте логическую/физическую модель БД для SQL Server 2005. В логической модели создайте сущности Студенты, Учебный план, Дисциплины, Сводная ведомость и Кадровый состав. Содержание атрибутов каждой сущности смотреть далее.
Результат выполнения задания рисунок 3.21
Рисунок 3.21 Модель БД
Задание 4
Сущность Студенты содержит атрибуты:
Студент_ид - идентификатор студента, ключевое поле;
Фамилия – фамилия студента, строковый тип размером 30 символов, не должен быть пустым;
Имя – имя студента, строковый тип размером 15 символов, не должен быть пустым;
Отчество – отчество студента, строковый тип размером 20 символов, не должен быть пустым;
Паспорт – серия и паспорт студента, строковый тип 12 символов, не должен быть пустым;
Группа – номер группы, строковый тип размером 6 символов, не должен быть пустым;
Адрес – адрес проживания студента, строковый тип размером 30 символов;
Телефон – номер телефона студента, строковый тип размером 10 символов.
Результат выполнения задания рисунок 3.22
Рисунок 3.22 Создание сущности Студенты
Задание 5
Создайте составной инверсный ключ по полям Фамилия, Имя, Отчеств.
Результат выполнения задания рисунок 3.23
Рисунок 3.23 Создание ключей
Задание 6
Создайте уникальный индекс по полю Паспорт
Результат выполнения задания рисунок 3.24
Рисунок 3.24 Создание уникального индекса
Задание 7
Настройте, что бы сущности выглядели следующим образом:
Результат выполнения задания рисунок 3.25
Рисунок 3.25 Результат настройки сущности
Задание 7
Проиндексируйте поле Группа, определив самостоятельно, каким по смыслу он должен быть Альтернативным или Инверсным.
Результат выполнения задания рисунок 3.26
Рисунок 3.26 Демонстрация поля группы
Задание 8
Сущность Учебный_план содержит атрибуты:
План_ид - идентификатор учебного плана, ключевое поле;
Семестр – семестр, в котором преподают ту или иную дисциплину, числовой тип, значение не должно быть пустым;
Количество_часов – количество часов отведенных на изучение дисциплины, числовой тип;
Результат выполнения задания рисунок 3.27
Рисунок 3.27 Сущность Учебный план
Задание 9
Сущность Дисциплины содержит атрибуты:
Дисциплина_ид - идентификатор дисциплины, ключевое поле;
Наименование – наименование изучаемой дисциплины, строковый тип размером 20 символов, не должен быть пустым, уникальный.
Результат выполнения задания рисунок 3.28
Рисунок 3.28 Сущность Дисциплины
Задание 10
Сущность Сводная_ведомость содержит атрибуты:
Оценка – оценка по дисциплине полученная студентом, числовой тип, значение не должно быть пустым и должно находиться в интервале от 1 до 5;
Дата_сдачи – дата и время получения оценки, тип дата-время, значение не должно быть пустым, по умолчанию текущая дата.
Результат выполнения задания рисунок 3.29
Рисунок 3.29 Сущность Сводная_ведомость
Задание 11
Сущность Кадровый_состав содержит атрибуты:
Работник_ид - идентификатор преподавателя, ключевое поле;
Фамилия – фамилия преподавателя, строковый тип размером 30 символов, не должен быть пустым;
Имя – имя преподавателя, строковый тип размером 15 символов, не должен быть пустым;
Отчество – отчество преподавателя, строковый тип размером 20 символов, не должен быть пустым;
Должность – должность работника колледжа, строковый тип размером 20 символов, не должен быть пустым;
Кафедра – кафедра, на которой работает работник колледжа, строковый тип размером 20 символов, не должен быть пустым;
Адрес – адрес работника, строковый тип размером 30 символов;
Телефон – телефон работника, строковый тип размером 10 символов.
Результат выполнения задания рисунок 3.30
Рисунок 3.30 Сущность Кадровый_состав
Задание 12
Выполните прямое проектирование созданной структуры таблиц на сервер в свою БД.
Код:
CREATE DEFAULT Количество
AS 36
go
CREATE RULE Оценка
AS @col BETWEEN 1 AND 5
go
CREATE RULE Семестр
AS @col BETWEEN 1 AND 10
go
CREATE TABLE Дисциплины
( Дисциплины_ид integer IDENTITY (1,1) ,
Наименование varchar(20) NOT NULL )
go
ALTER TABLE Дисциплины
ADD CONSTRAINT XPKДисциплины PRIMARY KEY CLUSTERED (Дисциплины_ид ASC)
go
ALTER TABLE Дисциплины
ADD CONSTRAINT Название UNIQUE (Наименование ASC)
Go
CREATE TABLE Кадровый_состав
( Работник_ид integer IDENTITY (1,1) ,
Фамилия varchar(30) NOT NULL ,
Имя varchar(15) NOT NULL ,
Отчество varchar(20) NOT NULL ,
Должность varchar(20) NOT NULL ,
Кафедра varchar(20) NOT NULL ,
Адрес varchar(30) NULL ,
Телефон varchar(10) NULL )
go
ALTER TABLE Кадровый_состав
ADD CONSTRAINT XPKКадровый_состав PRIMARY KEY CLUSTERED (Работник_ид ASC)
go
CREATE TABLE Сводная_ведомость
( Оценка integer NOT NULL ,
Дата_сдачи datetime NOT NULL ,
Дисциплины_ид integer NULL ,
Студент_ид integer NULL )
go
CREATE TABLE Студенты
( Фамилия varchar(30) NOT NULL ,
Студент_ид integer IDENTITY (1,1) ,
Имя varchar(15) NOT NULL ,
Отчество varchar(20) NOT NULL ,
Паспорт varchar(12) NULL ,
Группа varchar(6) NULL ,
Адрес varchar(30) NULL ,
Телефон varchar(10) NULL )
go
ALTER TABLE Студенты
ADD CONSTRAINT XPKСтуденты PRIMARY KEY CLUSTERED (Студент_ид ASC)
go
ALTER TABLE Студенты
ADD CONSTRAINT ogr2 UNIQUE (Группа asc)
go
CREATE TABLE Учебный_план
( План_ид integer IDENTITY (1,1) ,
Семестр integer NOT NULL ,
Количество_часов integer NULL ,
Дисциплины_ид integer NOT NULL ,
Работник_ид integer NOT NULL )
go
ALTER TABLE Учебный_план
ADD CONSTRAINT XPKУчебный_план PRIMARY KEY CLUSTERED (План_ид ASC,Дисциплины_ид ASC,Работник_ид ASC)
go
CREATE NONCLUSTERED INDEX Семестр ON Учебный_план
( Семестр ASC)
go
exec sp_bindefault 'Количество', 'Учебный_план.Количество_часов'
go
exec sp_bindrule 'Оценка', 'Сводная_ведомость.Оценка'
go
ALTER TABLE Сводная_ведомость
ADD CONSTRAINT R_11 FOREIGN KEY (Студент_ид) REFERENCES Студенты(Студент_ид)
ON DELETE NO ACTION
ON UPDATE NO ACTION
go
ALTER TABLE Сводная_ведомость
ADD CONSTRAINT R_12 FOREIGN KEY (Дисциплины_ид) REFERENCES Дисциплины(Дисциплины_ид)
ON DELETE NO ACTION
ON UPDATE NO ACTION
go
exec sp_bindrule 'Семестр', 'Студенты.Студент_ид'
go
exec sp_bindrule 'Семестр', 'Учебный_план.Семестр'
go
ALTER TABLE Учебный_план
ADD CONSTRAINT R_14 FOREIGN KEY (Дисциплины_ид) REFERENCES Дисциплины(Дисциплины_ид)
ON DELETE NO ACTION
ON UPDATE NO ACTION
go
ALTER TABLE Учебный_план
ADD CONSTRAINT R_15 FOREIGN KEY (Работник_ид) REFERENCES Кадровый_состав(Работник_ид)
ON DELETE NO ACTION
ON UPDATE NO ACTION
go