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

MySQL. Библиотека профессионала - Аткинсон Л

..pdf
Скачиваний:
166
Добавлен:
24.05.2014
Размер:
10.41 Mб
Скачать

602 Приложение Пример базы данных

PRIMARY

INDEX

* *

DROP TABLE IF EXISTS coupon;

CREATE TABLE coupon

ID INT DEFAULT

NOT NULL

Name

NOT NULL,

NOT NULL DEFAULT

NOT NULL DEFAULT DisplayPrecedence INT,

PRIMARY KEY

INDEX

INDEX (DisplayPrecedence)

Таблица контроля скидок, чтобы пользователь не мог дважды воспользоваться одной и той же скидкой.

DROP TABLE IF EXISTS

CREATE TABLE coupon_user

Coupon INT NOT NULL,

User INT NOT NULL,

PRIMARY KEY (Coupon,

FOREIGN KEY (Coupon) REFERENCES coupon FOREIGN KEY (User) REFERENCES user (ID)

Иерархия категорий товаров.

DROP TABLE IF EXISTS department;

CREATE TABLE department

ID INT NOT NULL

Name NOT NULL,

Graphic

Parent INT NOT NULL,

Description blob,

DisplayPrecedence INT NOT NULL,

PRIMARY

INDEX

INDEX (DisplayPrecedence,

Схема базы данных 603

FOREIGN KEY

REFERENCES department

Таблица сопоставления элементов каталога различным категориям.

DROP TABLE IF EXISTS

CREATE TABLE

Department INT NOT NULL,

Item INT NOT NULL,

PRIMARY

FOREIGN KEY (Department) REFERENCES department (ID),

FOREIGN KEY (Item) REFERENCES (ID)

Виды проплат, взимаемых по счетам.

DROP TABLE IF EXISTS

CREATE TABLE fee

ID INT NOT NULL

Name NOT NULL,

PRIMARY

INDEX (Name)

Перечень сделанных

DROP TABLE IF EXISTS invoice;

CREATE TABLE invoice

ID INT NOT NULL

User INT NOT NULL,

Active ENUM('N',

NOT NULL DEFAULT

Created NOT NULL,

PRIMARY KEY

INDEX

FOREIGN KEY (User) REFERENCES user (ID)

Информация о способе оплаты

DROP TABLE IF EXISTS

CREATE TABLE invoice_billing

ID INT NOT NULL

Invoice INT NOT NULL,

Billing INT NOT NULL,

Address INT NOT

604 Приложение Пример базы данных

Информация о кредитной

NOT NULL,

NOT NULL,

NOT NULL,

Дополнительная информация о владельце кредитной карточки, напечатанная на самой карточке, но не закодированная в магнитной полосе.

PRIMARY

INDEX

FOREIGN KEY (Invoice) REFERENCES invoice FOREIGN KEY (Address) REFERENCES address FOREIGN KEY (Billing) REFERENCES billing (ID)

Скидки, применимые к заказу.

DROP TABLE IF EXISTS

CREATE TABLE invoice_coupon

Invoice INT NOT NULL,

Coupon INT NOT NULL,

PRIMARY KEY (Invoice,

FOREIGN KEY (Invoice) REFERENCES invoice FOREIGN KEY (Coupon) REFERENCES coupon (ID)

Счета, выставленные к оплате по сделанным заказам.

DROP TABLE IF EXISTS

CREATE TABLE invoice_fee

Invoice INT NOT NULL,

Fee INT NOT NULL,

Value NOT NULL,

INDEX

INDEX

FOREIGN KEY (Invoice) REFERENCES invoice (ID), FOREIGN KEY (Fee) REFERENCES fee (ID)

Состояние заказа.

DROP TABLE IF EXISTS

CREATE TABLE invoice_status

ID INT NOT NULL AUTO_INCREMENT,

Invoice INT NOT NULL,

Status INT NOT NULL,

Схема базы данных 605

Created NOT NULL,

Description

PRIMARY

INDEX

FOREIGN KEY (Invoice) REFERENCES invoice (ID),

FOREIGN KEY (Status) REFERENCES status (ID)

Адрес доставки заказа.

DROP TABLE IF EXISTS

CREATE TABLE

ID INT NOT NULL

Invoice INT NOT NULL,

Address INT NOT NULL,

Shipping INT NOT NULL,

Message

PRIMARY

INDEX

FOREIGN KEY (Invoice) REFERENCES invoice

FOREIGN KEY (Address) REFERENCES address

FOREIGN KEY (Shipping) REFERENCES shipping (ID)

Перечень товаров, входящих в

DROP TABLE IF EXISTS

CREATE TABLE invoice_sku

ID INT NOT NULL

Invoice INT NOT NULL,

INT NOT NULL,

Quantity INT NOT NULL,

NOT NULL,

Name NOT NULL,

NOT NULL,

NOT NULL,

Freight NOT NULL,

Shipping INT NOT NULL,

NOT NULL DEFAULT

PRIMARY

INDEX

INDEX

INDEX

FOREIGN KEY (Invoice) REFERENCES invoice

FOREIGN KEY (SKU) REFERENCES (ID)

606 Приложение Пример базы данных

Варианты исполнения товаров, входящих в

DROP TABLE IF EXISTS

CREATE TABLE invoice_sku_variation

INT NOT NULL,

Variation INT NOT NULL,

Qualifier

PRIMARY Variation)

Элементы каталога, которые могут быть представлены в одном или нескольких вариантах.

DROP TABLE IF EXISTS item;

CREATE TABLE item

ID INT NOT NULL

Name NOT NULL,

Description BLOB,

Keywords

Thumbnail

Graphic

 

INT,

Active ENUM('N',

NOT NULL DEFAULT

PRIMARY

INDEX

INDEX (Active)

Произвольные отношения между элементами каталога.

DROP TABLE IF EXISTS

CREATE TABLE

Item INT NOT NULL,

INT NOT NULL,

Relationship INT NOT NULL,

PRIMARY KEY

(Item,

FOREIGN KEY (Item) REFERENCES item

FOREIGN KEY

REFERENCES item

FOREIGN KEY

(Relationship) REFERENCES relationship (ID)

Права пользователей системы.

DROP TABLE IF EXISTS permission;

CREATE TABLE permission

ID INT NOT NULL

Name NOT NULL,

Схема базы данных 607

PRIMARY

INDEX (Name)

Типы отношений между элементами каталога.

DROP TABLE IF EXISTS relationship;

CREATE TABLE relationship

ID INT NOT NULL

Name NOT NULL,

INT NOT NULL,

PRIMARY

INDEX (DisplayPrecedence, Name)

Таблица, в которой хранится инициализирующее значение генератора псевдослучайных чисел.

DROP TABLE IF EXISTS seed; CREATE TABLE seed

seed INT NOT NULL DEFAULT 314

Пользовательские сеансы.

DROP TABLE IF EXISTS session;

CREATE TABLE session

ID NOT NULL,

User INT,

Invoice INT,

PRIMARY

INDEX

INDEX

FOREIGN KEY (User) REFERENCES user (ID)

FOREIGN KEY (Invoice) REFERENCES invoice (ID)

Покупательские корзины (списки товаров, заказанных в том или ином

DROP TABLE IF EXISTS

CREATE TABLE

ID INT NOT NULL

Session NOT NULL,

INT NOT NULL,

Quantity INT NOT NULL,

Notes blob,

Приложение Пример базы данных

PRIMARY

INDEX (Session),

INDEX

FOREIGN KEY (Session) REFERENCES session (ID), FOREIGN KEY (SKU) REFERENCES sku (ID)

Варианты исполнения товаров, находящихся в

DROP TABLE IF EXISTS CREATE TABLE session_sku_variation

INT NOT NULL,

Variation INT NOT NULL, Qualifier

PRIMARY Variation)

Типы доставки (UPS,

DROP TABLE IF EXISTS shipping;

CREATE TABLE shipping

ID INT NOT NULL

Name NOT NULL,

INT NOT NULL,

PRIMARY

INDEX (DisplayPrecedence, Name)

Товары, которые можно купить, сгруппированные по полю (элемент

DROP TABLE IF EXISTS sku;

CREATE TABLE

ID INT NOT NULL

Item INT NOT NULL,

 

NOT NULL,

Name

NOT NULL,

 

 

NOT NULL,

 

 

NOT NULL,

 

 

NOT NULL,

DisplayPrecedence INT NOT NULL,

Active

ENUM('N',

NOT NULL DEFAULT

 

INT NOT NULL,

 

ENUM('N1,

NOT NULL DEFAULT

PRIMARY

INDEX

INDEX

INDEX (DisplayPrecedence,

Схема базы данных 609

FOREIGN KEY (Item) item (ID)

Варианты исполнения

DROP TABLE IF EXISTS sku_variation;

CREATE TABLE sku_variation

INT NOT NULL,

Variation INT NOT NULL,

PRIMARY

FOREIGN KEY (SKU) REFERENCES

FOREIGN KEY (Variation) REFERENCES variation (ID)

Типы сообщений, описывающих состояние заказа.

DROP TABLE IF EXISTS status;

CREATE TABLE status

ID INT NOT NULL

Name NOT NULL,

PRIMARY

INDEX (Name)

Ставки налогов для США.

DROP TABLE IF EXISTS tax;

CREATE TABLE tax

State

NOT NULL,

Rate

NOT NULL,

 

NOT NULL DEFAULT

PRIMARY

 

Клиенты и системные администраторы.

DROP TABLE IF EXISTS user;

CREATE TABLE user

ID INT NOT NULL

Login NOT NULL,

Password NOT NULL,

Address INT NOT NULL,

PRIMARY

INDEX

INDEX

FOREIGN KEY (Address) REFERENCES address (ID)

610 Приложение Пример базы данных

Права пользователей.

DROP TABLE IF EXISTS

CREATE TABLE user_permission

User INT NOT NULL,

INT NOT NULL,

PRIMARY KEY

(User,

 

FOREIGN KEY

(User) REFERENCES user

(ID),

FOREIGN KEY

(Permission) REFERENCES

permission (ID)

Списки товаров, заказываемых

DROP TABLE IF EXISTS

CREATE TABLE

ID INT NOT NULL

User INT NOT NULL,

INT NOT NULL,

Quantity INT NOT NULL,

PRIMARY

INDEX

INDEX

FOREIGN KEY (User) REFERENCES user

FOREIGN KEY (SKU) REFERENCES (ID)

Варианты, выбранные

DROP TABLE IF EXISTS

CREATE TABLE user_sku_variation

INT NOT NULL,

Variation INT NOT NULL,

PRIMARY Variation)

Варианты исполнения для того или иного атрибута L для

DROP TABLE IF EXISTS variation;

CREATE TABLE variation

ID INT NOT NULL

Name NOT NULL,

Attribute INT NOT NULL,

Description

Graphic

INT NOT NULL,

Схема базы данных

PRIMARY

INDEX

INDEX

FOREIGN KEY (Attribute) REFERENCES attribute (ID)