Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
27.11.2024
Размер:
432.41 Кб
Скачать

4.ПОСТРОЕНИЕ ФИЗИЧЕСКОЙ МОДЕЛИ БД

Физическое проектирование – создание базы данных в среде SQL

Server Management Studio 2017 средствами универсального компьютерного языка SQL, применяемого для создания, модификации и управления данными в реляционных базах данных.

Запрос на создание базы данных:

CREATE DATABASE REKLAMNOEAGENSTVO;4.1 Создание таблиц Запрос на создание таблицы «Заказы»:

CREATE TABLE zakazi

(

KOD_ZAK int PRIMARY KEY NOT NULL IDENTITY (1,1), KOD_KL int NOT NULL,

NOM_DOG int NOT NULL UNIQUE,

KOD_USLUG int NOT NULL,

NAIMEN_ZAK varchar(50) NOT NULL,

DATA date NOT NULL,

KOD_SR date NOT NULL,

KOD_ISP int NOT NULL DEFAULT 1 );

Из этой инструкции следует следующее описание структуры таблицы:

1.KOD_ZAK – «Номер заказа», тип int, отражает номер заказа,

данное поле является первичным и является счетчиком;

2.KOD_KL – «Код клиента», тип int, данное поле является внешним ключем связи таблицы «Клиенты» поля «Код клиента»;

3.NOM_DOG – «Номер договора», тип int, данное поле является внешним ключем связи таблицы «Заказ/Договор» поля «Номер договора»;

4.KOD_USLUG – «Код услуги», тип int, данное поле является внешним ключем связи таблицы «Услуги» поля «Код услуги»;

11

5.NAIMEN_ZAK – «Наименование заказа», тип varchar(50), данное поля для краткой информации о наименовании заказа;

6.DATA – «Дата заказа», тип date, отражает дату заказа;

7.KOD_SR – «Срок выполнения», тип date, отражает срок выполнения;

8.KOD_ISP– «Код сотрудника», тип int, данное поле является внешним ключем связи таблицы «Услуги» поля «Код услуги».

Запрос на создание таблицы «Клиенты»:

CREATE TABLE klienti

(

KOD_KL int PRIMARY KEY NOT NULL IDENTITY (1,1),

NAZV_KOMP varchar(50) NOT NULL,

FIO_KL varchar(40) NOT NULL,

INN int NOT NULL,

ADDRESS_KL varchar(40) NOT NULL,

INDEX_KL int NOT NULL,

CITY varchar(30) NOT NULL,

TEL bigint NOT NULL

);

Из этой инструкции следует следующее описание структуры таблицы:

1.KOD_KL – «Код клиента», тип int, отражает код клиент, данное поле является первичным и является счетчиком;

2.NAZV_KOMP – «Наименование компании», тип varchar(50),

отражает наименование компании;

3.FIO_KL – «ФИО клиента», тип varchar(40),отражает фамилию имя отчество клиента;

4.INN – «ИНН», тип int, отражает ИНН клиента;

5.ADDRESS_KL – «Адрес», varchar(40) – отражает адрес клиента;

12

6.INDEX_KL – «Индекс», тип int, отражает почтовый индекс

клиента;

7.CITY – «Город», тип varchar(30), отражает город клиента;

8.TEL – «Телефон» тип bigint, отражает телефонный номер

клиента.

Запрос на создание таблицы «Услуги»:

CREATE TABLE uslugi

(

KOD_USLUG int PRIMARY KEY NOT NULL IDENTITY (1,1), NAME_USLUG varchar(30) NOT NULL,

CENA_USLUG bigint NOT NULL );

Из этой инструкции следует следующее описание структуры таблицы:

1.KOD_USLUG – «Код услуги», тип int, отражает код услуги,

данное поле является первичным и является счетчиком;

2.NAME_USLUG – «Наименование услуги», тип varchar(30),

отражает наименование услуги;

3.CENA_USLUG – «Цена услуги», тип int, отражает цену услуг.

Запрос на создание таблицы «Сотрудники»:

CREATE TABLE sotrudniki

(

KOD_SOTRUD int PRIMARY KEY NOT NULL IDENTITY (1,1), FIO_SOTRUD varchar(40) NOT NULL,

INN int NOT NULL,

ADDRESS_SOTRUD varchar(40) NOT NULL,

TEL bigint NOT NULL

);

Из этой инструкции следует следующее описание структуры таблицы:

13

1.KOD_SOTRUD – «Код сотрудника», тип int, отражает код сотрудника, данное поле является первичным и является счетчиком;

2.FIO_SOTRUD – «ФИО сотрудника», тип varchar(40), отражает фамилию имя отчество сотрудника;

3.ADDRESS_SOTRUD – «Адрес», varchar(40) – отражает адрес сотрудника;

4.TEL – «Телефон» тип bigint, отражает телефонный номер сотрудника.

Запрос на создание таблицы «Заказ/Договор»:

CREATE TABLE zakaz_dogovor

(

NOM_DOG int PRIMARY KEY NOT NULL,

DATE_ZD date NOT NULL,

SUMMA_ZD bigint NOT NULL );

Из этой инструкции следует следующее описание структуры таблицы:

1.NOM_DOG – «Код сотрудника», тип int, номер договора, данное поле является первичным;

2.DATE_ZD – «Дата договора», тип date, отражает дату договора;

3.SUMMA_ZD – «Сумма по договору», тип bigint, отражает сумму по договору.

Создание связей между таблицами:

ALTER TABLE zakazi ADD CONSTRAINT c_klienti FOREIGN KEY (KOD_KL) REFERENCES klienti(KOD_KL) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE zakazi ADD CONSTRAINT c_zakazdogovor FOREIGN KEY (NOM_DOG) REFERENCES zakaz_dogovor(NOM_DOG) ON DELETE NO ACTION ON UPDATE NO ACTION;

14

ALTER TABLE zakazi ADD CONSTRAINT c_kodisp_kodsotrud FOREIGN KEY (KOD_ISP) REFERENCES sotrudniki(KOD_SOTRUD) ON DELETE SET DEFAULT ON UPDATE SET DEFAULT;

ALTER TABLE zakazi ADD CONSTRAINT c_koduslug_zakusl FOREIGN KEY (KOD_USLUG) REFERENCES uslugi(KOD_USLUG) ON DELETE NO ACTION ON UPDATE NO ACTION;

4.2 Заполнение таблиц.

1.Заполним таблицу «Клиенты» через команду insert:

INSERT INTO klienti( NAZV_KOMP, FIO_KL, INN, ADDRESS_KL, INDEX_KL, CITY, TEL)

VALUES

('ООО Рога и Копыта', 'Алексеев Алексей Алексеевич', 644000001, 'ул.Шевченко д.1', 413840, 'Москва', 89990000001),

('ООО Сибастьян', 'Тритонов Тритон Тритонович', 644000002, 'ул.Шевченко д.2', 413840, 'Санкт-Петербург', 89990000002),

('ООО Край света', 'Максимильян Максим Максимильянович', 644000003, 'ул.Шевченко д.3', 413840, 'Балашов', 89990000003),

('ООО Мозгопилпроминвест', 'Рогов Олег Владимирович', 644000004, 'ул.Шевченко д.4', 413840, 'Саратов', 899990000004),

('ООО Дыра на берегу', 'Древентий Борис Кирович', 644000005, 'ул.Шевченко д.5', 413840, 'Красноярск', 899990000005),

('ООО Автопромсветгаз', 'Пирогов Василий Евгеньевич', 644000006, 'ул.Шевченко д.6', 413840, 'Казань', 899990000006),

('ООО Мясоводахлебкомбинат', 'Молодинский Кирилл Евгеньевич', 644000007, 'ул.Шевченко д.7', 413840, 'Уфа', 89990000007),

('ООО Бременские музыканты', 'Петухов Олег Борисович', 644000007, 'ул.Шевченко д.8', 413840, 'Балаково', 89990000008);

15

Результат заполнения таблицы «Клиенты» представлен на рисунке 2.

Рисунок 2 – табличное представление таблицы «Клиенты»

2.Заполним таблицу «Сотрудники» через команду insert:

INSERT INTO sotrudniki (FIO_SOTRUD, INN ,ADDRESS_SOTRUD,TEL)

VALUES

('Сейфетдинов Руслан Халимович', 644000011,'ул. Шевченко д.22

кв.56',89999882296), ('Архипов Роман Алексеевич', 644000012,'ул. Лобачевского д.120

кв.19',89271002030);

Результат заполнения таблицы «Сотрудники» представлен на рисунке

3.

Рисунок 3 – табличное представление таблицы «Сотрудники»

3.Заполним таблицу «Услуги» через команду insert:

INSERT INTO uslugi ( NAME_USLUG, CENA_USLUG)

VALUES

16

('Разработка лендинга', 20000), ('Разработка сайта каталога', 30000), ('Разработка интернет магазина', 80000), ('Разработка Фирменного стиля', 50000);

Результат заполнения таблицы «Услуги» представлен на рисунке 4.

Рисунок 4 – табличное представление таблицы «Услуги»

4.Заполним таблицу «Заказ/Договор» через команду insert:

INSERT INTO zakaz_dogovor (NOM_DOG,DATE_ZD,SUMMA_ZD) VALUES

(100101,'18-11-01',20000), (100102,'18-11-03',20000), (100103,'18-11-05',30000), (100104,'18-11-07',30000), (100105,'18-11-09',80000), (100106,'18-11-11',80000), (100107,'18-11-13',50000), (100108,'18-11-15',50000);

Результат заполнения таблицы «Заказ/Договор» представлен на рисунке 5.

17

Рисунок 5 – табличное представление таблицы «Заказ/Договор»

1.Заполним таблицу «Заказы» через команду insert:

INSERT INTO zakazi (KOD_KL,NOM_DOG,KOD_USLUG,NAIMEN_ZAK,DATA,KOD_SR,KOD_I SP)

VALUES

(1,100101,1, 'Разработать лендинг ASAP', '2018-11-01', '2018-12-05',1),

(2,100102,1, 'Разработать лендинг ASAP', '2018-11-03', '2018-12-05',2),

(3,100103,2, 'Разработать каталог ASAP', '2018-11-05', '2018-12-05',1),

(4,100104,2, 'Разработать каталог ASAP', '2018-11-07', '2018-12-05',2),

(5,100105,3, 'Разработать интернет магазин ASAP', '2018-11-09', '2018- 12-05',1),

(6,100106,3, 'Разработать интернет магазин ASAP', '2018-11-11', '2018- 12-05',2),

(7,100107,4, 'Разработать корп стиль ASAP', '2018-11-13', '2018-12-

05',1),

(8,100108,4, 'Разработать корп стиль ASAP', '2018-11-15', '2018-12-

05',2);

Результат заполнения таблицы «Заказы» представлен на рисунке 6.

18

Рисунок 6 – табличное представление таблицы «Заказы»

4.3 Создание запросов

Запросы на вывод всех созданных таблиц:

SELECT * FROM klienti

SELECT * FROM sotrudniki

SELECT * FROM uslugi

SELECT * FROM zakaz_dogovor

SELECT * FROM zakazi

Результат работы запросов можно посмотреть на рисунке 9.

Рисунок 10 – вывод всех созданных таблиц

19

Запрос на вывод таблицы «Заказы» в более информативной форме, с

использованием связей и подстановок столбцов из других таблиц:

SELECT zakazi.KOD_ZAK, klienti.NAZV_KOMP, zakazi.NOM_DOG, uslugi.NAME_USLUG, zakazi.NAIMEN_ZAK, zakazi.DATA, zakazi.KOD_SR, sotrudniki.FIO_SOTRUD

FROM zakazi

INNER JOIN

klienti ON zakazi.KOD_ZAK = klienti.KOD_KL INNER JOIN

uslugi ON zakazi.KOD_USLUG = uslugi.KOD_USLUG INNER JOIN

sotrudniki ON zakazi.KOD_ISP = sotrudniki.KOD_SOTRUD

Результат работы запроса можно посмотреть на рисунке 10.

Рисунок 10 – вывод таблицы «Заказы» в информативной форме

Запрос на вывод горящих сроков по проектам на предстоящей 1

неделе:

SELECT klienti.NAZV_KOMP, uslugi.NAME_USLUG, zakazi.KOD_SR, sotrudniki.FIO_SOTRUD

FROM zakazi

INNER JOIN

klienti ON zakazi.KOD_ZAK= klienti.KOD_KL INNER JOIN

uslugi ON zakazi.KOD_USLUG = uslugi.KOD_USLUG INNER JOIN

20