Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СМЕТАНИН_КУРСАЧ_ПРИМЕР_Виртуальный магазин.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.81 Mб
Скачать

1.2 Формирование атрибутов исходного отношения

  1. Код;

  2. Фамилия;

  3. Имя;

  4. Отчество;

  5. Название;

  6. Номер счета;

  7. Дата заказа;

  8. Дата исполнения;

  9. Оплата.

    1. . Логическое проектирование бд (er - анализ)

ВЫДЕЛЕНИЕ СУЩНОСТЕЙ И СВЯЗЕЙ МЕЖДУ НИМИ

Исходя из системного анализа и атрибутов исходного отношения, можно выделить следующие сущности с ключевыми атрибутами:

1) Поставщик (код);

  1. Клиенты (код);

  2. Мебель (код);

  3. Тип оплаты (код);

  4. Заказ (код).

Выделенные сущности находятся в следующих связях:

  1. Поставщик поставляет Мебель;

  2. Клиент делает Заказ;

  3. Клиент осуществляет Тип оплаты;

  4. Заказ содержит мебель.

ПОСТРОЕНИЕ ДИАГРАММЫ ER-ТИПА С УЧЕТОМ ВСЕХ СУЩНОСТЕЙ И СВЯЗЕЙ МЕЖДУ НИМИ

Рисунок 1 - Связь «Поставщик – Мебель»

Рисунок 2 - Связь «Клиент – Заказ»

Рисунок 3 - Связь «Клиент – Тип оплаты »

Рисунок 4 - Связь «Заказ – Мебель»

Схема 1 - Общие связи таблиц

ФОРМИРОВАНИЕ НАБОРА ПРЕДВАРИТЕЛЬНЫХ ОТНОШЕНИЙ С УКАЗАНИЕМ ПРЕДПОЛАГАЕМОГО ПЕРВИЧНОГО КЛЮЧА

Таблица 1 - Отношение «Поставщик - мебель»

Отношение

Мебель

Первичный ключ

Код мебели

Внешний ключ

Код поставщика

Д обавляем

Отношение

Поставщик

Первичный ключ

Код поставщика

Таблица 2 - Отношение «Клиент - заказ»

Отношение

Заказ

Первичный ключ

Код заказа

Внешний ключ

Код клиента

Д обавляем

Отношение

Клиент

Первичный ключ

Код клиента

Таблица 3 - Отношение «Клиент – Тип оплаты»

Отношение

Тип оплаты

Первичный ключ

Код клиент

Внешний ключ

Код тип оплаты

Д обавляем

Отношение

Тип оплаты

Первичный ключ

Код тип оплаты

Таблица 4 - Отношение «Заказ - мебель»

Отношение

Заказ

Первичный ключ

Код заказа

Внешний ключ

Код мебели

Д обавляем

Отношение

Мебель

Первичный ключ

Код мебели

Схема 2 - Структурная схема базы данных

Таблица 5 - «Атрибуты таблицы поставщик»

Отношение

Поставщик

Атрибуты

Тип

Описание

Код

Числовой, ключ

Номер постав

Наименование

Строковый

Наименование постав

ИНН

Числовой

ИНН постав

Адрес

Строковый

Адрес постав

Телефон

Числовой

Телефон постав

Руководитель

Строковый

Руководитель постав

Таблица 6 - «Атрибуты таблицы клиенты»

Отношение

Клиенты

Атрибуты

Тип

Описание

Код

Числовой, ключ

Номер кл

Фамилия

Строковый

Фамилия кл

Имя

Строковый

Имя кл

Отчество

Строковый

Отчество кл

Телефон

Числовой

Телефон кл

Адрес

Строковый

Адрес кл

Таблица 7 - «Атрибуты таблицы мебель»

Отношение

Мебель

Атрибуты

Тип

Описание

Код

Числовой, ключ

Номер мебели

Название

Строковый

Название мебели

Срок службы

Строковый

Срок службы мебели

Цвет

Строковый

Цвет мебели

Материал

Строковый

Материал мебели

Цена

Числовой

Цена мебели

Таблица 8 - «Атрибуты таблицы тип оплаты»

Отношение

Тип оплаты

Атрибуты

Тип

Описание

Код

Числовой, ключ

Номер тп

Название банка

Строковый

Название банка тп

Номер счета

Числовой

Номер счета тп

Сумма

Числовой

Сумма тп

Таблица 9 - «Атрибуты таблицы заказ»

Отношение

Заказ

Атрибуты

Тип

Описание

Код

Числовой, ключ

Номер зак

Дата заказа

Дата

Дата заказа зак

Дата исполнения

Дата

Дата исполнения зак

Название заказа

Строковый

Название заказа зак

Оплата

Числовой

Оплата зак

    1. . SQL – скрипт генерации таблиц БД

Create table Klient (

Klient_id Int UNSIGNED ZEROFILL BINARY NOT NULL AUTO_INCREMENT,

Fam Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Im Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Otch Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Adres_k Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Tel_k Int UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Index AI_Klient_id (Klient_id),

Index AI_Fam (Fam),

Index AI_Im (Im),

Index AI_Otch (Otch),

Index AI_Adres_k (Adres_k),

Index AI_Tel_k (Tel_k),

Primary Key (Klient_id)) TYPE = MyISAM

ROW_FORMAT = Default;

Create table Meb (

Meb_id Int UNSIGNED ZEROFILL BINARY NOT NULL AUTO_INCREMENT,

Name_m Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Srok Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Cvet Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Ves Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Cena Int UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Material Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Postav_id Int UNSIGNED ZEROFILL BINARY NOT NULL,

Zakaz_id Int UNSIGNED ZEROFILL BINARY NOT NULL,

Klient_id Int UNSIGNED ZEROFILL BINARY NOT NULL,

Index AI_Meb_id (Meb_id),

Index AI_Name_m (Name_m),

Index AI_Srok (Srok),

Index AI_Cvet (Cvet),

Index AI_Ves (Ves),

Index AI_Cena (Cena),

Index AI_Material (Material),

Primary Key (Meb_id,Postav_id,Zakaz_id,Klient_id)) TYPE = MyISAM

ROW_FORMAT = Default;

Create table Postav (

Postav_id Int UNSIGNED ZEROFILL BINARY NOT NULL AUTO_INCREMENT,

Name_p Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Inn Int UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Adres_p Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Tel_p Int UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Ruck Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Index AI_Postav_id (Postav_id),

Index AI_Name_p (Name_p),

Index AI_Inn (Inn),

Index AI_Adres_p (Adres_p),

Index AI_Tel_p (Tel_p),

Index AI_Ruck (Ruck),

Primary Key (Postav_id)) TYPE = MyISAM

ROW_FORMAT = Default;

Create table Tip_oplata (

Oplata_id Int UNSIGNED ZEROFILL BINARY NOT NULL AUTO_INCREMENT,

Name_b Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Nomer_s Int UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

summa Int UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Klient_id Int UNSIGNED ZEROFILL BINARY NOT NULL,

Index AI_Oplata_id (Oplata_id),

Index AI_Name_b (Name_b),

Index AI_Nomer_s (Nomer_s),

Index AI_summa (summa),

Primary Key (Oplata_id,Klient_id)) TYPE = MyISAM

ROW_FORMAT = Default;

Create table Zakaz (

Zakaz_id Int UNSIGNED ZEROFILL BINARY NOT NULL AUTO_INCREMENT,

Data_zakaza Date UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Data_ispoln Date UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Name_zakaz Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Oplata Char(20) UNSIGNED ZEROFILL BINARY AUTO_INCREMENT,

Klient_id Int UNSIGNED ZEROFILL BINARY NOT NULL,

Index AI_Zakaz_id (Zakaz_id),

Index AI_Data_zakaza (Data_zakaza),

Index AI_Data_ispoln (Data_ispoln),

Index AI_Name_zakaz (Name_zakaz),

Index AI_Oplata (Oplata),

Primary Key (Zakaz_id,Klient_id)) TYPE = MyISAM

ROW_FORMAT = Default;

Alter table Zakaz add Index IX_Relationship3 (Klient_id);

Alter table Zakaz add Foreign Key (Klient_id) references Klient (Klient_id) on delete restrict on update restrict;

Alter table Tip_oplata add Index IX_Relationship4 (Klient_id);

Alter table Tip_oplata add Foreign Key (Klient_id) references Klient (Klient_id) on delete restrict on update restrict;

Alter table Meb add Index IX_Relationship1 (Postav_id);

Alter table Meb add Foreign Key (Postav_id) references Postav (Postav_id) on delete restrict on update restrict;

Alter table Meb add Index IX_Relationship2 (Zakaz_id,Klient_id);

Alter table Meb add Foreign Key (Zakaz_id,Klient_id) references Zakaz (Zakaz_id,Klient_id) on delete restrict on update restrict;