我想标准化这个数据库。
我这样做了:
(sales_order_num为主键,sales_order_date,clerk_num,clerk_name,cus_number作为外键,order_total)
((sales_order_num 作为外键,item_order 作为外键,两者作为复合主键)
(item_order为主键,描述,数量,unite_price,总计)
(cust_number为主键,cust_name,cust_address)
如果您想为销售订单创建标准化数据库,您可以从考虑 5 个表开始:
- 客户:这将存储客户数据,其表结构如下:
CREATE TABLE Customer (
Id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(255),
Address VARCHAR(255)
);
- 职员:这将存储职员数据,其表结构如下:
CREATE TABLE Clerk (
Id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(255)
);
- Items:这将存储项目数据,其表结构如下所示:
CREATE TABLE Item (
Id INT PRIMARY KEY AUTO_INCREMENT,
Description VARCHAR(255),
UnitPrice DECIMAL(10, 2)
);
- 销售订单:这将存储销售订单数据,其表结构如下:
CREATE TABLE SalesOrder (
Id INT PRIMARY KEY AUTO_INCREMENT,
CustomerID INT,
OrderDate DATE,
ClerkID INT,
FOREIGN KEY (CustomerID) REFERENCES Customer(Id),
FOREIGN KEY (ClerkID) REFERENCES Clerk(Id)
);
销售订单是您的主订单表,其中包含客户和职员 ID 作为外键
- 销售订单详细信息:这将存储每个订单的详细数据,其表结构如下:
CREATE TABLE SalesOrderDetail (
Id INT PRIMARY KEY AUTO_INCREMENT,
SalesOrderID INT,
ItemID INT,
Quantity INT,
Total DECIMAL(10, 2),
FOREIGN KEY (SalesOrderID) REFERENCES SalesOrder(SalesOrderID),
FOREIGN KEY (ItemID) REFERENCES Item(ItemID)
);
销售订单详细信息是您的订单详细信息表,由销售订单(主表)和作为外键的项目 ID 组成
这个结构将帮助你实现3NF