Базы данных / Подмога_БД_Величко / 6th work / 6аn aабоGа
.doc6ая работа.
Из методички Александра Владимировича:
Практическое задание №6.
Преобразование реляционной БД с помощью языка SQL.
Например: БД Университета должна быть преобразована в предложенный вид с помощью SQL запросов (здесь и далее все манипуляции делаются с помощью SQL).
Замечание. Для выполнения этого задания обучающимся выдают схему конечной РБД.
Порядок выполнения:
-
Переименовать таблицы и столбцы (атрибуты, категории) по-английски.
-
Выявить действительно лишние таблицы и произвести их корректное удаление. Для этого сначала удаляются данные из таблицы, а потом уже сама таблица.
-
Выявить таблицы, нуждающиеся в изменении, и привести их к искомому виду путем удаления, добавления и (или) замены типа данных столбцов.
Замечание. Таблицы, нуждающиеся в изменении, могут потребовать большого количества запросов (больше 3), иногда проще удалить таблицу и создать заново. Как это сделано в примере с Таблицей «Студенты» – для экономии места, однако можно потребовать выполнить все действия по изменению таблицы в учебных целях.
-
Добавить недостающие таблицы.
-
Создать связи (их можно создавать при создании и модификации таблиц).
-
Заполнить таблицы.
Способ оформления:
ФКГ ФИО
Схема исходной БД
Далее для каждого запроса: исходные данные – запрос – полученные данные,
и т.д. до тех пор, пока схема БД не станет такой же, как и
Схема выданной БД
Распечатки таблиц
Что мы делали на паре:
Для того чтобы выполнить 6ую работу мы разбираем следующий пример.
Смысл: создать базу данных:
Для этого создаётся несколько запросов на языке SQL.
1 вид запросов
Создание таблиц
Синтаксис
Create table <имя таблицы>
(<column_name1> data_type [constraint]
[,<column_name2> data_type [constraint]]…);
constraint : Null, not null, primary key, unique
Data type:
Счётчик – counter
Числа: байт: byte, целое-short, длинное целое-int, одинарное с плавающей точкой: single, двойное с плавающей точкой: double; денежное-currency, логический- Boolean, текстовый text(байты), тип даты и времени: datetime.
Пример:
Создаём таблицу product
Create table product
(maker text(1),
model text(4) primary key,
type text(7));
2ой тип запросов.
Удаление таблицы.
Сначала следует удалить данные из таблицы.
Синтаксис:
Delete * from <имя таблицы>
Пример:
DELETE * FROM product;
Далее удаляется сама таблица:
Синтаксис:
drop table <имя таблицы>
Пример:
drop table product;
3ий вид запросов.
Создание таблицы с ограничением целостности таблицы:
Синтаксис:
Create table <имя таблицы>
(<column_name1> data_type [constraint]
…
[,<column_nameN> data_type [constraint]]
Constraint <имя ограничения> <смысл> (список атрибутов к которым оно относится));
Пример:
Create table pc
(code int,
model text(4),
speed short,
ram short,
hd int,
cd text(3),
price currency,
constraint con_pc_primary_key primary key(code));
4ый вид запросов
Создание таблицы с ограничением целостности внешнего ключа
Какой-то столбец создаваемой таблицы является внешним ключом. Как задать это в операторе create?
Синтаксис:
Create table <имя таблицы>
(<column_name1> data_type [constraint]
…
[,<column_nameN> data_type [constraint]]
Constraint <имя ограничения> foreign key (имя столбца этой таблицы) references <таблица на которую ссылается>(столбец));
Ограничение создаётся в той таблице, которая ссылается!
Пример: создадим таблицу laptop которая ссылается на таблицу product.
create table laptop
(code int primary key,
model text(4),
speed short,
ram short,
hd int,
price currency,
screen byte,
constraint lap_product foreign key (model) references product(model));
5ый вид запросов
Добавление ограничения.
Как теперь связать таблицы pc и product?
Операция относится к операциям изменения таблицы- alter table.
Пример:
Alter table pc
Add constraint pc_product foreign key (model) references product(model);
6ой вид запросов
Ограничение целостности внешнего ключа, налагаемое на столбец при создании таблицы
create table printer
(code int primary key,
model text(4) references product(model),
color text(1),
type text(1),
price currency);
7ый вид запросов:
Изменение структуры таблицы
Добавление нового столбца.
Alter table laptop
Add column cd text(4);
Удаление этого столбца:
alter table laptop
drop column cd;
удаление того столбца на который есть ссылки
alter table product
drop column model;
ошибка. Выход: удаление связей. Почему удаление ограничения таблицы лучше чем ограничения на столбец?
Удаление ограничения налагаемого на таблицу
Alter table <tablename>
Drop constraint <constraint_name>
изменение типа данных столбца.
alter table laptop
alter column screen short;