mysql创建数据库和表电子商城系统
时间: 2024-12-25 14:22:43 浏览: 9
### 创建适用于电子商城系统的数据库和表
#### 数据库创建
为了在 MySQL 中创建一个名为 `mall` 的数据库来存储电子商城的数据,可以执行如下 SQL 语句:
```sql
CREATE DATABASE mall;
```
这会建立一个新的数据库实例,专门用于容纳与电子商务平台相关的所有表格和其他对象[^1]。
接着切换到新创建的数据库环境中继续操作:
```sql
USE mall;
```
此命令告知 MySQL 客户端之后所有的 DDL/DML 操作都将在 `mall` 这个上下文中被执行。
#### 表结构定义
对于典型的电商应用而言,至少需要几个核心实体对应的表单来支撑业务逻辑运作。以下是部分基础表的设计方案及其建表脚本示例:
##### 用户信息表 (`users`)
记录顾客基本信息,如用户名、密码哈希值等敏感字段应妥善加密处理。
```sql
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash CHAR(64),
email VARCHAR(100),
phone_number VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
##### 商品分类表 (`categories`)
维护商品所属类目体系,便于管理和检索产品线。
```sql
CREATE TABLE categories (
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
parent_category_id INT REFERENCES categories(category_id), -- 自关联实现多级目录支持
description TEXT
);
```
##### 商品详情表 (`products`)
描述待售物品的具体属性,包括但不限于名称、价格、库存量等重要参数。
```sql
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) CHECK (price >= 0),
stock_quantity INT UNSIGNED DEFAULT 0,
category_id INT NOT NULL,
FOREIGN KEY (category_id) REFERENCES categories(category_id)
ON DELETE CASCADE
ON UPDATE CASCADE,
image_url VARCHAR(255),
details LONGTEXT
);
```
##### 订单主表 (`orders`)
跟踪客户提交订单的整体情况,每条记录代表一次完整的购买行为。
```sql
CREATE TABLE orders (
order_id BIGINT AUTO_INCREMENT PRIMARY KEY,
buyer_user_id INT NOT NULL,
total_amount DECIMAL(10, 2) CHECK (total_amount > 0),
status ENUM('pending', 'processing', 'shipped', 'delivered') DEFAULT 'pending',
payment_method ENUM('credit_card', 'paypal', 'bank_transfer'),
shipping_address JSON, -- 使用JSON列型灵活表示地址信息
placed_at DATETIME DEFAULT NOW(),
completed_at DATETIME,
FOREIGN KEY (buyer_user_id) REFERENCES users(user_id)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
```
##### 订单明细子表 (`order_items`)
细化每个订单内具体包含了哪些商品项及其数量、单价等相关细节。
```sql
CREATE TABLE order_items (
item_id BIGINT AUTO_INCREMENT PRIMARY KEY,
order_id BIGINT NOT NULL,
product_id INT NOT NULL,
quantity SMALLINT UNSIGNED,
unit_price DECIMAL(8, 2),
discount_rate FLOAT DEFAULT 0.0,
FOREIGN KEY (order_id) REFERENCES orders(order_id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (product_id) REFERENCES products(product_id)
ON DELETE NO ACTION
ON UPDATE CASCADE
);
```
上述设计涵盖了基本的功能需求,并通过外键约束确保了不同表之间的一致性和完整性。当然实际项目开发过程中还需要考虑更多因素比如性能优化、安全性加固等方面的要求。
阅读全文