В этом руководстве вы познакомитесь с образцом базы данных SQL Server под названием BikeStores.
Ниже представлена схема базы данных BikeStores:
Как видно из диаграммы, образец базы данных BikeStores имеет две схемы: продажи и производство, и эти схемы содержат девять таблиц.
Таблицы базы данных
Таблица продаж.магазины
Таблица sales.stores содержит информацию о магазине. У каждого магазина есть название, контактная информация, такая как телефон и адрес электронной почты, а также адрес, включающий улицу, город, штат и почтовый индекс.
CREATE TABLE sales.stores( store_id INT IDENTITY(1, 1) PRIMARY KEY, store_name VARCHAR(255) NOT NULL, phone VARCHAR(25), email VARCHAR(255), street VARCHAR(255), city VARCHAR(255), state VARCHAR(10), zip_code VARCHAR(5) );
Таблица продаж.персонал
Таблица sales.staffs хранит основную информацию о персонале, включая имя, фамилию. Она также содержит информацию о связи, такую как email и телефон.
Персонал работает в магазине, указанном значением в столбце store_id. В магазине может быть один или несколько сотрудников.
Персонал подчиняется менеджеру магазина, указанному значением в столбце manager_id. Если значение в manager_id равно null, то персонал является топ-менеджером.
Если сотрудник больше не работает ни в одном магазине, значение в активном столбце устанавливается равным нулю.
CREATE TABLE sales.staffs( staff_id INT IDENTITY(1, 1) PRIMARY KEY, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, phone VARCHAR(25), active tinyint NOT NULL, store_id INT NOT NULL, manager_id INT, FOREIGN KEY(store_id) REFERENCES sales.stores(store_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(manager_id) REFERENCES sales.staffs(staff_id) ON DELETE NO ACTION ON UPDATE NO ACTION );
Таблица production.categories
В таблице production.categories хранятся категории велосипедов, такие как детские велосипеды, велосипеды комфортного класса и электровелосипеды.
CREATE TABLE production.categories( category_id INT IDENTITY(1, 1) PRIMARY KEY, category_name VARCHAR(255) NOT NULL );
Таблица производства.бренды
В таблице production.brands хранится информация о марках велосипедов, например, Electra, Haro и Heller.
CREATE TABLE production.brands( brand_id INT IDENTITY(1, 1) PRIMARY KEY, brand_name VARCHAR(255) NOT NULL );
Таблица производства.продукты
Таблица production.products хранит информацию о продукте, такую как название, марка, категория, год выпуска модели и цена.
Каждый продукт принадлежит бренду, указанному в столбце brand_id. Таким образом, бренд может иметь ноль или много продуктов.
Каждый продукт также принадлежит категории, указанной в столбце category_id. Кроме того, каждая категория может иметь ноль или много продуктов.
CREATE TABLE production.products( product_id INT IDENTITY(1, 1) PRIMARY KEY, product_name VARCHAR(255) NOT NULL, brand_id INT NOT NULL, category_id INT NOT NULL, model_year SMALLINT NOT NULL, list_price DECIMAL(10, 2) NOT NULL, FOREIGN KEY(category_id) REFERENCES production.categories(category_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(brand_id) REFERENCES production.brands(brand_id) ON DELETE CASCADE ON UPDATE CASCADE );
Таблица продаж.клиенты
Таблица sales.customers хранит информацию о клиенте, включая имя, фамилию, телефон, адрес электронной почты, улицу, город, штат и почтовый индекс.
CREATE TABLE sales.customers( customer_id INT IDENTITY(1, 1) PRIMARY KEY, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(25), email VARCHAR(255) NOT NULL, street VARCHAR(255), city VARCHAR(50), state VARCHAR(25), zip_code VARCHAR(5) );
Таблица продаж.заказов
В таблице sales.orders хранится информация заголовка заказа на продажу, включая клиента, статус заказа, дату заказа, требуемую дату, дату отправки.
Он также хранит информацию о том, где была создана транзакция купли-продажи(магазин) и кто ее создал(персонал).
Каждый заказ на продажу имеет строку в таблице sales_orders. Заказ на продажу имеет одну или несколько позиций, хранящихся в таблице sales.order_items.
CREATE TABLE sales.orders( order_id INT IDENTITY(1, 1) PRIMARY KEY, customer_id INT, order_status tinyint NOT NULL, -- Order status: 1 = Pending; 2 = Processing; 3 = Rejected; 4 = Completed order_date DATE NOT NULL, required_date DATE NOT NULL, shipped_date DATE, store_id INT NOT NULL, staff_id INT NOT NULL, FOREIGN KEY(customer_id) REFERENCES sales.customers(customer_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(store_id) REFERENCES sales.stores(store_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(staff_id) REFERENCES sales.staffs(staff_id) ON DELETE NO ACTION ON UPDATE NO ACTION );
Таблица sales.order_items
Таблица sales.order_items хранит позиции заказа на продажу. Каждая позиция принадлежит заказу на продажу, указанному в столбце order_id.
Позиция заказа на продажу включает продукт, количество заказа, цену по прейскуранту и скидку.
CREATE TABLE sales.order_items( order_id INT, item_id INT, product_id INT NOT NULL, quantity INT NOT NULL, list_price DECIMAL(10, 2) NOT NULL, discount DECIMAL(4, 2) NOT NULL DEFAULT 0, PRIMARY KEY(order_id, item_id), FOREIGN KEY(order_id) REFERENCES sales.orders(order_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(product_id) REFERENCES production.products(product_id) ON DELETE CASCADE ON UPDATE CASCADE );
Таблица производства.акций
Таблица production.stocks хранит информацию о запасах, т.е. о количестве конкретного продукта в конкретном магазине.
CREATE TABLE production.stocks( store_id INT, product_id INT, quantity INT, PRIMARY KEY(store_id, product_id), FOREIGN KEY(store_id) REFERENCES sales.stores(store_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(product_id) REFERENCES production.products(product_id) ON DELETE CASCADE ON UPDATE CASCADE );
Нажмите следующую ссылку, чтобы загрузить пример скрипта базы данных:
Загрузить образец базы данных SQL Server
Теперь вы должны быть знакомы с образцом базы данных BikeStores и готовы загрузить ее в SQL Server.