某工厂的物资管理系统涉及的实体有: 仓库:属性有仓库号、面积、电话号码 零件:属性有零件号、名称、单价 供应商:属性有供应商号、姓名、地址、电话 项目:属性有项目号、预算、开工日期 职工:属性有职工号、姓名、年龄 其中,一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,用库存量来表示某种零件在某个仓库中的数量。一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作。 供应商、项目和零件三者之间具有多对多的联系。即一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供应的零件
时间: 2023-07-14 21:12:19 浏览: 337
该物资管理系统的ER图如下所示:
![ER图](https://img-blog.csdn.net/20180705235349514)
实体之间的关系如下所示:
1. 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,因此仓库和零件之间是多对多的关系,它们之间的联系用实体“库存”表示。
2. 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,因此仓库和职工之间是一对多的关系,即一个仓库对应多个职工,而一个职工只对应一个仓库。这个联系用实体“保管”表示。
3. 供应商、项目和零件三者之间具有多对多的联系,即一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供应的零件。这个联系用实体“供应”表示。
在ER图中,实体用矩形表示,属性用椭圆形表示,联系用菱形表示。箭头表示参与联系的实体的角色,例如仓库和零件之间的库存联系中,仓库是“存放”,零件是“被存放”。在实体和联系中,用下划线表示属性的主键,例如仓库的主键是“_仓库号”,零件的主键是“_零件号”,供应商的主键是“_供应商号”。
相关问题
某工厂物资管理涉及的实体及其属性是: 仓库:仓库号、面积、电话号码:零件:零件号、名称、规格、单价、 描述:供应商:供应商号、姓名、地址、电话号码、账号:项目:项目号、预算、开王日期:职工:职工号、姓名、年龄、职称。 这些实体之间的联系是: (1)一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,因此仓库和零件具有多对多联系。用库存量来表示某种零件的数量。(2)一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,因此仓库和职工之间是一对多联系。 (3)职工之间具有领导与被领导关系,即仓库主任领导若干保管员,因此职工实体型中具有一对多的联系。 (4)供应商、项目和零件三者之间具有多对多的联系,即一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供应的零件,每种零件由不同供应商供给。请设计该系统的全局 E - R 图,并转换成关系模型(包括关系名、属性名、候选码和完整性约束)。
关系模型如下:
1. 仓库(仓库号,面积,电话号码,库存量)
候选码:仓库号
2. 职工(职工号,姓名,年龄,职称,所在仓库号)
候选码:职工号
外键:所在仓库号 -> 仓库.仓库号
3. 零件(零件号,名称,规格,单价,描述)
候选码:零件号
4. 供应商(供应商号,姓名,地址,电话号码,账号)
候选码:供应商号
5. 项目(项目号,预算,开王日期)
候选码:项目号
6. 供应(供应商号,项目号,零件号)
候选码:(供应商号,项目号,零件号)
外键:供应商号 -> 供应商.供应商号
外键:项目号 -> 项目.项目号
外键:零件号 -> 零件.零件号
完整性约束:
1. 仓库和零件之间的多对多联系是通过一个关系模型(例如,库存表)来表达,库存量必须大于等于0。
2. 职工的年龄必须大于等于18岁。
3. 一个职工只能在一个仓库工作,因此仓库和职工之间是一对多联系。
4. 职工实体型中具有一对多的联系,即仓库主任领导若干保管员。
5. 供应商、项目和零件三者之间具有多对多的联系,每个项目都必须供应至少一种零件。
6. 每个零件必须由至少一个供应商供应。
在SQL中用语句实现1.物资管理子系统的关系模式 仓库(仓库号、面积、电话号码) 零件(零件号、名称、规格、描述) 供应商(供应商号、姓名、地址、电话号码) 项目(项目号、预算、开工日期) 职工(职工号、姓名、年龄、职称) 入库记录(入库记录号、仓库号、零件号、供应商号、项目号、入库日期) 入库细节(入库记录号、零件号、单价) 出库记录(出库记录号、仓库号、零件号、项目号、出库日期) 出库细节(出库记录号、零件号、单价)遵循实体完整性,参照完整性,用户自定义完整性
以下是SQL语句实现物资管理子系统的关系模式:
1. 创建仓库表:
```
CREATE TABLE Warehouse (
Warehouse_ID INT PRIMARY KEY,
Area INT,
Phone_Number VARCHAR(20)
);
```
2. 创建零件表:
```
CREATE TABLE Part (
Part_ID INT PRIMARY KEY,
Name VARCHAR(50),
Spec VARCHAR(50),
Description VARCHAR(200)
);
```
3. 创建供应商表:
```
CREATE TABLE Supplier (
Supplier_ID INT PRIMARY KEY,
Name VARCHAR(50),
Address VARCHAR(100),
Phone_Number VARCHAR(20)
);
```
4. 创建项目表:
```
CREATE TABLE Project (
Project_ID INT PRIMARY KEY,
Budget DECIMAL(10, 2),
Start_Date DATE
);
```
5. 创建职工表:
```
CREATE TABLE Employee (
Employee_ID INT PRIMARY KEY,
Name VARCHAR(50),
Age INT,
Title VARCHAR(20)
);
```
6. 创建入库记录表:
```
CREATE TABLE Inbound_Record (
Inbound_ID INT PRIMARY KEY,
Warehouse_ID INT,
Part_ID INT,
Supplier_ID INT,
Project_ID INT,
Inbound_Date DATE,
FOREIGN KEY (Warehouse_ID) REFERENCES Warehouse(Warehouse_ID),
FOREIGN KEY (Part_ID) REFERENCES Part(Part_ID),
FOREIGN KEY (Supplier_ID) REFERENCES Supplier(Supplier_ID),
FOREIGN KEY (Project_ID) REFERENCES Project(Project_ID)
);
```
7. 创建入库细节表:
```
CREATE TABLE Inbound_Detail (
Inbound_ID INT,
Part_ID INT,
Price DECIMAL(10, 2),
FOREIGN KEY (Inbound_ID) REFERENCES Inbound_Record(Inbound_ID),
FOREIGN KEY (Part_ID) REFERENCES Part(Part_ID),
PRIMARY KEY (Inbound_ID, Part_ID)
);
```
8. 创建出库记录表:
```
CREATE TABLE Outbound_Record (
Outbound_ID INT PRIMARY KEY,
Warehouse_ID INT,
Part_ID INT,
Project_ID INT,
Outbound_Date DATE,
FOREIGN KEY (Warehouse_ID) REFERENCES Warehouse(Warehouse_ID),
FOREIGN KEY (Part_ID) REFERENCES Part(Part_ID),
FOREIGN KEY (Project_ID) REFERENCES Project(Project_ID)
);
```
9. 创建出库细节表:
```
CREATE TABLE Outbound_Detail (
Outbound_ID INT,
Part_ID INT,
Price DECIMAL(10, 2),
FOREIGN KEY (Outbound_ID) REFERENCES Outbound_Record(Outbound_ID),
FOREIGN KEY (Part_ID) REFERENCES Part(Part_ID),
PRIMARY KEY (Outbound_ID, Part_ID)
);
```
在创建这些数据表时,需要注意实体完整性、参照完整性以及用户自定义完整性的要求,例如在创建入库记录表和入库细节表时,需要使用外键来实现参照完整性。
阅读全文