Физическая модель базы данных (базовые таблицы)

Содержание

Слайд 2

Задача

Создание таблиц и объектов в базе данных, в которых будет храниться информация о сущностях предметной

Задача Создание таблиц и объектов в базе данных, в которых будет храниться
области.
Вход: логическая модель базы данных
Выход: скрипт для создания таблиц и индексов на языке определения данных DDL (Data Definition Language).

Слайд 3

Типы таблиц

Постоянные базовые таблицы (Base Table) - таблицы, содержимое которых хранится в базе данных

Типы таблиц Постоянные базовые таблицы (Base Table) - таблицы, содержимое которых хранится
и которые остаются в базе данных постоянно, если не удаляются явным образом.
Глобальные временные таблицы - таблицы, которые применяются в качестве рабочей области хранения данных и которые уничтожаются в конце сеанса работы с базой данных.
Локальные временные таблицы - таблицы, которые аналогичны глобальным временным таблицам, но доступны только тому программному модулю, в котором созданы.

Слайд 4

ОПРЕДЕЛЕНИЕ БАЗОВЫХ ТАБЛИЦ

ОПРЕДЕЛЕНИЕ БАЗОВЫХ ТАБЛИЦ

Слайд 5

Создание базовой таблицы

CREATE TABLE имя таблицы (
Имя_столбца тип_данных [,
Имя_столбца тип_данных] … )

Создание базовой таблицы CREATE TABLE имя таблицы ( Имя_столбца тип_данных [, Имя_столбца тип_данных] … )

Слайд 6

Создание таблицы заказов

CREATE TABLE order (
id_order INT(5),
o_date DATETIME,
o_cost

Создание таблицы заказов CREATE TABLE order ( id_order INT(5), o_date DATETIME, o_cost FLOAT, o_status VARCHAR(30) )
FLOAT,
o_status VARCHAR(30)
)

Слайд 7

Создать таблицу products

id_product INT(5),
p_name VARCHAR(20),
id_category INT(5),
p_price FLOAT

Создать таблицу products id_product INT(5), p_name VARCHAR(20), id_category INT(5), p_price FLOAT

Слайд 8

Определение таблиц на основе существующей

CREATE TABLE product_category1
SELECT id_product, p_name, id_category, p_price

Определение таблиц на основе существующей CREATE TABLE product_category1 SELECT id_product, p_name, id_category,

FROM products
WHERE id_category=1

Слайд 9

Определение таблиц на основе существующей

CREATE TABLE ptoduct_category2(id int(5))
SELECT id_product as ‘id’
FROM

Определение таблиц на основе существующей CREATE TABLE ptoduct_category2(id int(5)) SELECT id_product as
products
WHERE id_category=2

Слайд 10

Клонирование таблиц

CREATE TABLE new_products
LIKE products

Клонирование таблиц CREATE TABLE new_products LIKE products

Слайд 11

МОДИФИКАЦИЯ ТАБЛИЦ

МОДИФИКАЦИЯ ТАБЛИЦ

Слайд 12

Переименование таблицы Изменим таблицу заказов: переименуем ее в orders

ALTER TABLE catalog.order RENAME catalog.orders
RENAME

Переименование таблицы Изменим таблицу заказов: переименуем ее в orders ALTER TABLE catalog.order
TABLE catalog.order TO catalog.orders

Слайд 13

Добавление столбца

ALTER TABLE имя_таблицы
ADD определение столбца [,
ADD определение столбца]…)

Добавление столбца ALTER TABLE имя_таблицы ADD определение столбца [, ADD определение столбца]…)

Слайд 14

Добавьте поле id_buyer в таблицу заказов

ALTER TABLE orders
ADD id_buyer INT(11)

Добавьте поле id_buyer в таблицу заказов ALTER TABLE orders ADD id_buyer INT(11)

Слайд 15

Добавьте поле id_seller в таблицу заказов

ALTER TABLE orders
ADD id_seller INT(11)

Добавьте поле id_seller в таблицу заказов ALTER TABLE orders ADD id_seller INT(11)

Слайд 16

Удаление столбца

ALTER TABLE имя_таблицы DROP имя_столбца

Удаление столбца ALTER TABLE имя_таблицы DROP имя_столбца

Слайд 17

Удалить столбец o_date

ALTER TABLE orders
DROP o_date

Удалить столбец o_date ALTER TABLE orders DROP o_date

Слайд 18

Изменение определения столбца

ALTER TABLE имя_таблицы
MODIFY имя_столбца тип_данных

Изменение определения столбца ALTER TABLE имя_таблицы MODIFY имя_столбца тип_данных

Слайд 19

У таблицы new_products установите для p_name тип данных для varchar(30), для p_price

У таблицы new_products установите для p_name тип данных для varchar(30), для p_price
– тип int(11)

ALTER TABLE new_products
MODIFY p_name varchar(30),
MODIFY p_price int(11)

Слайд 20

УДАЛЕНИЕ ТАБЛИЦ

УДАЛЕНИЕ ТАБЛИЦ

Слайд 21

Удаление таблицы заказов

DROP TABLE orders

Удаление таблицы заказов DROP TABLE orders

Слайд 22

ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ

ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ

Слайд 23

Типы ограничений целостности

PRIMARY KEY
[NOT] NULL
DEFAULT
UNIQUE- уникальное поле
FOREIGN KEY
CHECK ограничение значений

Типы ограничений целостности PRIMARY KEY [NOT] NULL DEFAULT UNIQUE- уникальное поле FOREIGN KEY CHECK ограничение значений

Слайд 24

Свойства первичного ключа

отношение (таблица) может иметь только один первичный ключ;
первичный ключ должен

Свойства первичного ключа отношение (таблица) может иметь только один первичный ключ; первичный
быть уникальным;
первичный ключ должен быть минимальным, т.е. включать минимальное число атрибутов, необходимых для однозначной идентификации кортежа;
первичный ключ не может содержать нулевых значений;
значение первичного ключа не должно меняться при смене состояний базы данных.

Слайд 25

Ограничения первичных ключей

имя_столбца тип_данных PRIMARY KEY
имя_столбца тип_данных AUTO_INCREMENT
PRIMARY KEY
ALTER TABLE имя_таблицы
ADD

Ограничения первичных ключей имя_столбца тип_данных PRIMARY KEY имя_столбца тип_данных AUTO_INCREMENT PRIMARY KEY
PRIMARY KEY (список_столбцов)

Слайд 26

Ограничения первичных ключей

CREATE TABLE orders (
id_order INT(5) AUTO_INCREMENT PRIMARY KEY,

Ограничения первичных ключей CREATE TABLE orders ( id_order INT(5) AUTO_INCREMENT PRIMARY KEY,
o_date DATETIME,
o_cost FLOAT,
o_status VARCHAR(30)
)

Слайд 27

Ограничение на отсутствие значений

имя_столбца тип_данных [NOT] NULL
CREATE TABLE order (
id_order INT(5)

Ограничение на отсутствие значений имя_столбца тип_данных [NOT] NULL CREATE TABLE order (
PRIMARY KEY AUTO_INCREMENT,
o_date DATETIME NOT NULL,
o_cost FLOAT NULL,
o_status VARCHAR(30) NULL
)

Слайд 28

Определение значений по умолчанию

имя_столбца тип_данных
DEFAULT значение_по_умолчанию
CREATE TABLE order (
id_order INT(5),

Определение значений по умолчанию имя_столбца тип_данных DEFAULT значение_по_умолчанию CREATE TABLE order (

o_date DATATIME NOT NULL,
o_cost FLOAT DEFAULT 0,
o_status VARCHAR(30) DEFAULT ‘в обработке’
)

Слайд 29

Определение значений по умолчанию

ALTER TABLE имя_таблицы
ALTER имя_столбца SET DEFAULT значение
ALTER TABLE

Определение значений по умолчанию ALTER TABLE имя_таблицы ALTER имя_столбца SET DEFAULT значение
имя_таблицы
ALTER имя_столбца DROP DEFAULT

Слайд 30

Добавить (удалить) у столбца p_price (таблица products) значение по умолчанию

ALTER TABLE products

Добавить (удалить) у столбца p_price (таблица products) значение по умолчанию ALTER TABLE

ALTER p_price SET DEFAULT 0
ALTER TABLE products
ALTER p_price DROP DEFAULT

Слайд 31

Ограничение уникальности

имя_столбца тип_данных UNIQUE
ALTER TABLE имя_таблицы
ADD UNIQUE(список_столбцов)

Ограничение уникальности имя_столбца тип_данных UNIQUE ALTER TABLE имя_таблицы ADD UNIQUE(список_столбцов)

Слайд 32

Свойства внешних ключей

Внешний ключ должен содержать такое же число колонок, такого же

Свойства внешних ключей Внешний ключ должен содержать такое же число колонок, такого
типа и в том же порядке следования, что и соответствующий первичный ключ.
Имена колонок внешнего ключа и их значения по умолчанию могут отличаться от используемых в соответствующем первичном ключе (в том числе иметь NULL-значения).
Таблица может иметь любое число внешних ключей.
Упорядочение значений колонок внешнего ключа в его индексе может отличаться от соответствующего первичного ключа.
Внешний ключ не может ссылаться на виртуальную таблицу.

Слайд 33

Ограничение ссылочной целостности

FOREIGN KEY (имя_столбца(ов)_дочерней_таблицы) REFERENCES имя_родительской_таблицы (имя_столбца(ов))
ON DELETE RESTRICT
ON

Ограничение ссылочной целостности FOREIGN KEY (имя_столбца(ов)_дочерней_таблицы) REFERENCES имя_родительской_таблицы (имя_столбца(ов)) ON DELETE RESTRICT ON UPDATE CASCADE
UPDATE CASCADE

Слайд 34

Поддержка целостности

RESTRICT – запрещает удалять строки, если на эту строку имеются ссылки

Поддержка целостности RESTRICT – запрещает удалять строки, если на эту строку имеются
из дочерней таблицы
CASCADE – удаление строки родительской таблицы приводит к удалению всех связанных с ней строк в дочерней таблицы
SET NULL – удаление строки родительской таблицы приводит к установке в значение NULL всех внешних ключей дочерней таблицы, которые на нее ссылаются
SET DEFAULT удаление строки родительской таблицы приводит к установке в значение по умолчанию всех внешних ключей дочерней таблицы, которые на нее ссылаются

Слайд 35

Ограничение на значение

ALTER TABLE users
ADD u_phone CHAR(16)
CHECK(u_phone LIKE '_(___)___-__-__')

Ограничение на значение ALTER TABLE users ADD u_phone CHAR(16) CHECK(u_phone LIKE '_(___)___-__-__')

Слайд 36

Добавление ограничений

ALTER TABLE имя_таблицы
ADD ограничение_целостности

Добавление ограничений ALTER TABLE имя_таблицы ADD ограничение_целостности