ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
在本教程中,我们将介绍一个SQL Server示例数据库:*bk\_stores*。 ![](https://img.kancloud.cn/2d/58/2d585fd1c32653df4c7782477fba0a7a_742x602.png) 从图中可以看出,`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 production.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 ); ```