SQL Server示例数据库

SQL Server示例数据库

在本教程中,我们将介绍一个SQL Server示例数据库:bk_stores

以下是bk_stores数据库ER图:

从图中可以看出,bk_stores示例数据库有两个模式销售(Sales)和生产(Production),这些模式有9张表。

数据库表

1. sales.stores表

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)
);

2. sales.staffs表

sales.staffs表存储员工的基本信息,包括名字,姓氏。它还包含电子邮件和电话等通信信息。

store_id列中的值指定员工工作的商店。一个商店可以有一个或多个员工。
manager_id列中的值指定员工向商店经理报告。如果manager_id中的值为null,则员工是最高管理者。

如果员工不再适用于任何商店,则active列中的值将设置为0

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
);

3. production.categories表
production.categories表存储自行车的类别,如儿童自行车,舒适自行车和电动自行车。

CREATE TABLE production.categories (
    category_id INT IDENTITY (1, 1) PRIMARY KEY,
    category_name VARCHAR (255) NOT NULL
);

4. production.brands表
production.brands表存储自行车品牌信息,例如:凤凰,Electra,Haro和Heller。

CREATE TABLE production.brands (
    brand_id INT IDENTITY (1, 1) PRIMARY KEY,
    brand_name VARCHAR (255) NOT NULL
);

5. production.products表
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 sales.brands (brand_id) 
        ON DELETE CASCADE ON UPDATE CASCADE
);

6. sales.customers表

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)
);

7. sales.orders表
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
);

8. 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
);

9. production.stocks
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
);

单击以下按钮下载示例数据库脚本:

现在,应该熟悉bk_stores示例数据库并准备将其加载到SQL Server中。