设计一个商业的数据库并写出脚本
时间: 2023-12-03 17:44:17 浏览: 80
SQL数据库简介.doc
这是一个比较大的工程,需要先进行数据库设计,然后再编写相应的脚本。以下是一个简单的商业数据库设计示例:
**表1: Customer (客户信息)**
|字段名称|数据类型|约束条件|
|:------|:------|:------|
|customer_id|整型|主键、自增|
|name|字符型|非空|
|phone|字符型|非空|
|email|字符型|非空|
|address|字符型|非空|
**表2: Order (订单信息)**
|字段名称|数据类型|约束条件|
|:------|:------|:------|
|order_id|整型|主键、自增|
|customer_id|整型|外键(Customer表)|
|order_date|日期型|非空|
|total_price|浮点型|非空|
**表3: Product (产品信息)**
|字段名称|数据类型|约束条件|
|:------|:------|:------|
|product_id|整型|主键、自增|
|name|字符型|非空|
|price|浮点型|非空|
**表4: OrderItem (订单项信息)**
|字段名称|数据类型|约束条件|
|:------|:------|:------|
|order_item_id|整型|主键、自增|
|order_id|整型|外键(Order表)|
|product_id|整型|外键(Product表)|
|quantity|整型|非空|
以上四个表的关系为:
Customer表和Order表是一对多的关系,即一个客户可以有多个订单。
Order表和OrderItem表是一对多的关系,即一个订单可以有多个订单项。
Product表和OrderItem表是多对多的关系,即一个产品可以在多个订单中出现,一个订单中可以包含多种产品。
接下来是一个简单的脚本示例,用于创建以上四个表:
```sql
-- 创建Customer表
CREATE TABLE Customer (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
phone VARCHAR(15) NOT NULL,
email VARCHAR(50) NOT NULL,
address VARCHAR(100) NOT NULL
);
-- 创建Order表
CREATE TABLE Order (
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
order_date DATE NOT NULL,
total_price DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (customer_id) REFERENCES Customer(customer_id)
);
-- 创建Product表
CREATE TABLE Product (
product_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
-- 创建OrderItem表
CREATE TABLE OrderItem (
order_item_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
FOREIGN KEY (order_id) REFERENCES Order(order_id),
FOREIGN KEY (product_id) REFERENCES Product(product_id)
);
```
以上脚本示例中,我们使用了MySQL语法,如果使用其他数据库,语法可能会有所不同。此外,还需要注意表之间的关系、数据类型和约束条件等方面的设置。
阅读全文