海外代购管理系统数据库设计
根据海外代购公司的业务需求,我设计了一个包含以下核心实体的数据库模型:
- 用户管理模块:客户、供应商、员工
- 商品管理模块:商品分类、商品信息、库存
- 订单管理模块:订单头、订单行、支付记录、物流记录
- 采购管理模块:采购单、采购行
下面是具体的数据库表结构设计:
-- 用户管理模块
CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password_hash VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
full_name VARCHAR(100),
address TEXT,
country VARCHAR(50),
registration_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_login TIMESTAMP,
status VARCHAR(20) DEFAULT 'active'
);
CREATE TABLE suppliers (
supplier_id SERIAL PRIMARY KEY,
company_name VARCHAR(100) NOT NULL,
contact_person VARCHAR(100),
contact_email VARCHAR(100),
contact_phone VARCHAR(20),
country VARCHAR(50) NOT NULL,
address TEXT,
website VARCHAR(100),
supplier_status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
employee_no VARCHAR(20) UNIQUE NOT NULL,
full_name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
department VARCHAR(50),
position VARCHAR(50),
hire_date DATE NOT NULL,
termination_date DATE,
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 商品管理模块
CREATE TABLE product_categories (
category_id SERIAL PRIMARY KEY,
category_name VARCHAR(100) NOT NULL,
parent_category_id INT,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (parent_category_id) REFERENCES product_categories(category_id)
);
CREATE TABLE products (
product_id SERIAL PRIMARY KEY,
product_sku VARCHAR(50) UNIQUE NOT NULL,
product_name VARCHAR(100) NOT NULL,
category_id INT NOT NULL,
supplier_id INT NOT NULL,
description TEXT,
origin_country VARCHAR(50),
price DECIMAL(10, 2) NOT NULL,
cost_price DECIMAL(10, 2),
weight DECIMAL(10, 2),
dimensions VARCHAR(50),
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (category_id) REFERENCES product_categories(category_id),
FOREIGN KEY (supplier_id) REFERENCES suppliers(supplier_id)
);
CREATE TABLE product_inventory (
inventory_id SERIAL PRIMARY KEY,
product_id INT NOT NULL,
location VARCHAR(50),
quantity INT NOT NULL DEFAULT 0,
available_quantity INT NOT NULL DEFAULT 0,
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_by INT,
FOREIGN KEY (product_id) REFERENCES products(product_id),
FOREIGN KEY (updated_by) REFERENCES employees(employee_id)
);
-- 订单管理模块
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
order_no VARCHAR(50) UNIQUE NOT NULL,
customer_id INT NOT NULL,
employee_id INT, -- 处理订单的员工
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
expected_delivery_date DATE,
actual_delivery_date DATE,
order_status VARCHAR(20) DEFAULT 'pending',
payment_status VARCHAR(20) DEFAULT 'pending',
shipping_address TEXT,
billing_address TEXT,
total_amount DECIMAL(10, 2) NOT NULL,
discount_amount DECIMAL(10, 2) DEFAULT 0,
tax_amount DECIMAL(10, 2) DEFAULT 0,
shipping_fee DECIMAL(10, 2) DEFAULT 0,
notes TEXT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
);
CREATE TABLE order_items (
item_id SERIAL PRIMARY KEY,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
unit_price DECIMAL(10, 2) NOT NULL,
subtotal DECIMAL(10, 2) NOT NULL,
discount DECIMAL(10, 2) DEFAULT 0,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
CREATE TABLE payments (
payment_id SERIAL PRIMARY KEY,
order_id INT NOT NULL,
payment_method VARCHAR(50) NOT NULL,
transaction_id VARCHAR(100),
payment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
amount DECIMAL(10, 2) NOT NULL,
status VARCHAR(20) DEFAULT 'pending',
notes TEXT,
FOREIGN KEY (order_id) REFERENCES orders(order_id)
);
CREATE TABLE shipping_records (
shipping_id SERIAL PRIMARY KEY,
order_id INT NOT NULL,
tracking_number VARCHAR(100),
shipping_carrier VARCHAR(50),
shipping_date TIMESTAMP,
estimated_delivery_date DATE,
actual_delivery_date DATE,
status VARCHAR(50),
shipping_address TEXT,
notes TEXT,
FOREIGN KEY (order_id) REFERENCES orders(order_id)
);
-- 采购管理模块
CREATE TABLE purchase_orders (
purchase_order_id SERIAL PRIMARY KEY,
purchase_order_no VARCHAR(50) UNIQUE NOT NULL,
supplier_id INT NOT NULL,
employee_id INT NOT NULL, -- 创建采购单的员工
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
expected_delivery_date DATE,
actual_delivery_date DATE,
status VARCHAR(20) DEFAULT 'pending',
total_amount DECIMAL(10, 2) NOT NULL,
notes TEXT,
FOREIGN KEY (supplier_id) REFERENCES suppliers(supplier_id),
FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
);
CREATE TABLE purchase_order_items (
purchase_item_id SERIAL PRIMARY KEY,
purchase_order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
unit_price DECIMAL(10, 2) NOT NULL,
subtotal DECIMAL(10, 2) NOT NULL,
received_quantity INT DEFAULT 0,
FOREIGN KEY (purchase_order_id) REFERENCES purchase_orders(purchase_order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
数据库设计说明
-
用户管理模块
- 区分客户、供应商和员工三种角色
- 客户表存储个人信息、地址和账户状态
- 供应商表记录合作商家信息,包括公司名称、联系方式和国家
- 员工表管理内部工作人员信息
-
商品管理模块
- 支持多级商品分类
- 商品表关联供应商和分类
- 库存表实时跟踪商品数量和位置
-
订单管理模块
- 订单头表记录客户订单的总体信息
- 订单行表详细记录购买的商品
- 支付表跟踪订单支付状态和交易信息
- 物流表记录订单配送状态
-
采购管理模块
- 采购单表记录向供应商的采购信息
- 采购行表详细记录采购的商品和数量
这个数据库设计支持海外代购业务的核心流程,包括商品管理、订单处理、采购管理和客户关系管理。你可以根据实际业务需求进行调整和扩展。
以下是一个海外代购公司信息化管理系统的数据库设计示例,你可以根据公司的具体情况对表结构和字段进行调整和完善。
数据库概念模型(E-R图)
- 代购订单实体
- 属性:订单编号(主键)、客户信息(外键关联客户实体)、代购商品信息(外键关联商品实体)、订单状态(如待付款、已付款待发货、已发货待收货、已完成、已取消等)、下单时间、预计发货时间、实际发货时间、预计到货时间、实际到货时间、订单备注等。
- 客户实体
- 属性:客户编号(主键)、客户姓名、客户联系方式(手机号码、电子等邮箱)、客户地址(收货地址)、客户注册时间、客户等级(可依据消费金额等划分等级,如普通会员、VIP会员等)、客户积分等。
- 商品实体
- 属性:商品编号(主键)、商品名称、商品类别(外键关联商品类别实体)、商品品牌、商品规格、商品价格(采购价和销售价)、商品库存数量、商品产地、商品描述、商品图片路径、商品上架时间、商品下架时间等。
- 商品类别实体
- 属性:类别编号(主键)、类别名称、类别描述、父类别编号(用于构建多级分类结构,如果是顶级类别则为空)等。
- 供应商实体
- 属性:供应商编号(主键)、供应商名称、供应商联系方式(电话、邮箱等)、供应商地址、合作开始时间、合作结束时间(如果合作未结束则为空)、供应商信誉评级等。
- 采购订单实体
- 属性:采购订单编号(主键)、供应商信息(外键关联供应商实体)、采购商品信息(外键关联商品实体)、采购数量、采购单价、采购总价、采购订单状态(如待发货、已发货待收货、已完成、已取消等)、采购下单时间、预计发货时间、实际发货时间、预计到货时间、实际到货时间、采购订单备注等。
- 物流信息实体
- 属性:物流编号(主键)、物流单号、物流承运商、发货时间、发货地点、预计到达时间、实际到达时间、物流状态(如在途中、已到达等)、物流跟踪信息等。
- 财务记录实体
- 属性:财务记录编号(主键)、相关订单信息(外键代关联购订单或采购订单实体)、财务类型(如客户付款、供应商付款、退款等)、金额、交易时间、交易备注等。
- 员工实体
- 属性:员工编号(主键)、员工姓名、员工职位、员工联系方式(电话、邮箱等)、员工入职时间、员工离职时间(如果未离职则为空)、员工工资等。
- 员工操作记录实体
- 属性:操作记录编号(主键)、操作员工信息(外键关联员工实体)、操作类型(如订单审核、订单发货、采购订单录入等)、操作时间、操作对象(如订单编号、采购订单编号等)、操作备注等。
数据库逻辑结构设计(关系表设计)
代购订单表(Order)
字段名称 | 数据类型 | 约束 | 描述 |
---|---|---|---|
OrderID | INT | 主键,自增 | 订单编号 |
CustomerID | INT | 外键,关联客户表 | 客户信息 |
ProductID | INT | 外键,关联商品表 | 代购商品信息 |
OrderStatus | VARCHAR(50) | 订单状态 | |
OrderTime | DATETIME | 下单时间 | |
ExpectedShipmentTime | DATETIME | 预计发货时间 | |
ActualShipmentTime | DATETIME | 实际发货时间 | |
ExpectedArrivalTime | DATETIME | 预计到货时间 | |
ActualArrivalTime | DATETIME | 实际到货时间 | |
OrderRemark | TEXT | 订单备注 |
客户表(Customer)
字段名称 | 数据类型 | 约束 | 描述 |
---|---|---|---|
CustomerID | INT | 主键,自增 | 客户编号 |
CustomerName | VARCHAR(100) | 客户姓名 | |
ContactNumber | VARCHAR(20) | 客户联系方式 | |
VARCHAR(100) | 客户电子邮箱 | ||
Address | TEXT | 客户地址 | |
RegistrationTime | DATETIME | 客户注册时间 | |
CustomerLevel | VARCHAR(50) | 客户等级 | |
CustomerPoints | INT | 客户积分 |
商品表(Product)
字段名称 | 数据类型 | 约束 | 描述 |
---|---|---|---|
ProductID | INT | 主键,自增 | 商品编号 |
ProductName | VARCHAR(200) | 商品名称 | |
CategoryID | INT | 外键,关联商品类别表 | 商品类别 |
Brand | VARCHAR(100) | 商品品牌 | |
Specification | VARCHAR(200) | 商品规格 | |
PurchasePrice | DECIMAL(10,2) | 商品采购价 | |
SellingPrice | DECIMAL(10,2) | 商品销售价 | |
StockQuantity | INT | 商品库存数量 | |
Origin | VARCHAR(100) | 商品产地 | |
ProductDescription | TEXT | 商品描述 | |
ProductImage | VARCHAR(200) | 商品图片路径 | |
OnShelfTime | DATETIME | 商品上架时间 | |
OffShelfTime | DATETIME | 商品下架时间 |
商品类别表(ProductCategory)
字段名称 | 数据类型 | 约束 | 描述 |
---|---|---|---|
CategoryID | INT | 主键,自增 | 类别编号 |
CategoryName | VARCHAR(100) | 类别名称 | |
CategoryDescription | TEXT | 类别描述 | |
ParentCategoryID | INT | 外键,关联自身,可为空 | 父类别编号 |
供应商表(Supplier)
字段名称 | 数据类型 | 约束 | 描述 |
---|---|---|---|
SupplierID | INT | 主键,自增 | 供应商编号 |
SupplierName | VARCHAR(200) | 供应商名称 | |
ContactNumber | VARCHAR(20) | 供应商联系方式 | |
VARCHAR(100) | 供应商电子邮箱 | ||
Address | TEXT | 供应商地址 | |
CooperationStartTime | DATETIME | 合作开始时间 | |
CooperationEndTime | DATETIME | 可为空 | 合作结束时间 |
SupplierCreditRating | VARCHAR(50) | 供应商信誉评级 |
采购订单表(PurchaseOrder)
字段名称 | 数据类型 | 约束 | 描述 |
---|---|---|---|
PurchaseOrderID | INT | 主键,自增 | 采购订单编号 |
SupplierID | INT | 外键,关联供应商表 | 供应商信息 |
ProductID | INT | 外键,关联商品表 | 采购商品信息 |
PurchaseQuantity | INT | 采购数量 | |
PurchaseUnitPrice | DECIMAL(10,2) | 采购单价 | |
PurchaseTotalPrice | DECIMAL(10,2) | 采购总价 | |
PurchaseOrderStatus | VARCHAR(50) | 采购订单状态 | |
PurchaseOrderTime | DATETIME | 采购下单时间 | |
ExpectedShipmentTime | DATETIME | 预计发货时间 | |
ActualShipmentTime | DATETIME | 实际发货时间 | |
ExpectedArrivalTime | DATETIME | 预计到货时间 | |
ActualArrivalTime | DATETIME | 实际到货时间 | |
PurchaseOrderRemark | TEXT | 采购订单备注 |
物流信息表(Logistics)
字段名称 | 数据类型 | 约束 | 描述 |
---|---|---|---|
LogisticsID | INT | 主键,自增 | 物流编号 |
LogisticsNumber | VARCHAR(100) | 物流单号 | |
Carrier | VARCHAR(200) | 物流承运商 | |
ShipmentTime | DATETIME | 发货时间 | |
ShipmentLocation | VARCHAR(200) | 发货地点 | |
ExpectedArrivalTime | DATETIME | 预计到达时间 | |
ActualArrivalTime | DATETIME | 实际到达时间 | |
LogisticsStatus | VARCHAR(50) | 物流状态 | |
LogisticsTrackingInfo | TEXT | 物流 |