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中。


上一篇: 連接到SQL Server 下一篇: 加載示例資料庫