目录
数据库表设计-核心表创建
数据库整体设计
头歌实验代码
数据库表设计-项目职员表
头歌实验代码
数据库表设计-关联表
头歌实验代码
一个仓库管理数据库,我们首先需要了解需求,才可能去设计我们的数据库,那么对一个仓库管理,必定是对仓库里的零件进行管理,那么我们还需要知道零件的来源,哪些零件来自哪些供应商?零件的去向又是哪一零件供应给哪一个项目使用?这些零件存放在哪个仓库?哪个职员管理哪个仓库?等等一些问题,都是我们在设计数据库之前需要思考的问题。
仓库管理系统数据库的整体设计如下图所示:总共涉及到七张表:
仓库表
零件表
供应商表
项目表
职员表
供应关系表
仓库关系表
仓库表
仓库表的主要信息有如下内容:
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
warehouseId | int(11) | 仓库号 | 主键,非空 |
area | int(11) | 面积 | 非空 |
phone | int(11) | 电话号码 | 非空 |
零件表
零件表的主要信息有如下内容:
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
componentId | int(11) | 零件号 | 主键,非空 |
componentName | varcahr(20) | 名称 | 非空 |
standard | varchar(255) | 规格 | 非空 |
price | double(10,2) | 价格 | 非空 |
describe | varchar(255) | 描述 | 非空 |
供应商表
供应商表的主要信息有如下内容:
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
supplyId | int(11) | 供应商号 | 主键,非空 |
name | varchar(20) | 姓名 | 非空 |
address | varchar(255) | 地址 | 非空 |
phone | int(11) | 电话号码 | 非空 |
account | bigint(18) | 账号 | 非空 |
编程要求
请使用 warehouse_db 数据库创建表,具体任务如下:
创建仓库表,命名为 warehouse;
创建零件,命名为 component;
创建供应商表,命名为 supplier。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。测试输出结果较长,请自行在测试集中查看。
注意:每次点击评测后台都会将数据库环境重置,数据库 warehouse_db 会自动创建好。
#请在此添加实现代码 ########## Begin ########## #在warehouse_db库中创建warehouse表 use warehouse_db; CREATE TABLE `warehouse` ( `warehouseId` int(11) NOT NULL, `area` int(11) NOT NULL, `phone` int(11) NOT NULL, PRIMARY KEY (`warehouseId`) ); #在warehouse_db库中创建component表 CREATE TABLE `component` ( `componentId` int(11) NOT NULL, `componentName` varchar(20) NOT NULL, `standard` varchar(255) NOT NULL, `price` double(10, 2) NOT NULL, `describe` varchar(255) NOT NULL, PRIMARY KEY (`componentId`) ); #在warehouse_db库中创建supplier表 CREATE TABLE `supplier` ( `supplyId` int(11) NOT NULL, `name` varchar(20) NOT NULL, `address` varchar(255) NOT NULL, `phone` int(11) NOT NULL, `account` bigint(18) NOT NULL, PRIMARY KEY (`supplyId`) ); ########## End ##########
设计编写完核心表之后,我们还需要设计表对仓库的零件进行销售和管理,这里我们设计两张表——项目表和职员表如下图:
项目表
项目表的主要信息有如下内容:
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
projectId | int(11) | 项目号 | 主键,非空 |
projectBudget | double(10,0) | 项目预算 | 非空 |
commenceDate | datetime | 开工日期 | 非空 |
职员表
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
employeeId | int(11) | 职工号 | 主键,非空 |
name | varchar(20) | 姓名 | 非空 |
age | int(3) | 年龄 | 非空 |
designation | varchar(20) | 职称 | 非空 |
warehouseId | int(11) | 仓库号 | 外键,非空 |
leaders | varchar(20) | 上级领导 | 非空 |
编程要求
请使用 warehouse_db 数据库创建项目表和职员表,具体任务如下:
① 项目表命名为 project;
② 借阅表命名为 employee 。
注意其中外键要求如下:
#请在此添加实现代码 ########## Begin ########## #在warehouse_db库中创建project表 use warehouse_db; CREATE TABLE `project` ( `projectId` int(11) NOT NULL, `projectBudget` double(10, 0) NOT NULL, `commenceDate` datetime NOT NULL, PRIMARY KEY (`projectId`) ); #在warehouse_db库中创建employee表 CREATE TABLE `employee` ( `employeeId` int(11) NOT NULL, `name` varchar(20) NOT NULL, `age` int(3) NOT NULL, `designation` varchar(20) NOT NULL, `warehouseId` int(11) NOT NULL, `leaders` varchar(20) NOT NULL, PRIMARY KEY (`employeeId`), INDEX `FK_employee_warehouseId`(`warehouseId`), CONSTRAINT `FK_employee_warehouseId` FOREIGN KEY (`warehouseId`) REFERENCES `warehouse` (`warehouseId`) ); ########## End ##########
关联表
我们已经把所有的信息表都创建好了,现在我们就来创建他们之间的关联表——供应表和库存表:
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
supplyId | int(11) | 供应商号 | 主键,外键,非空 |
projectId | int(11) | 项目号 | 外键,非空 |
componentId | int(11) | 零件号 | 外键,非空 |
supplyCount | int(11) | 供应量 | 非空 |
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
warehouseId | int(11) | 仓库号 | 主键,外键,非空 |
componentId | int(11) | 零件号 | 外键,非空 |
repertoryCount | int(11) | 库存量 | 非空 |
编程要求
请在Begin-End之间使用 warehouse_db 数据库创建供应表和库存表,具体任务如下:
① 供应表命名为 supply ,注意其中外键要求如下:
外键 supplyId 的外键名称设置为 FK_supply_supplyId,外键表为供应商(supplier);
外键 projectId 的外键名称设置为 FK_supply_projectId,外键表为项目表(project);
外键 componentId 的外键名称设置为 FK_supply_componentId,外键表为零件表(component)。
② 库存表命名为 repertory ,注意其中外键要求如下:
外键 warehouseId 的外键名称设置为 FK_repertory_warehouseId,外键表为仓库表(warehouse);
外键 componentId 的外键名称设置为 FK_repertory_component_componentId,外键表为零件表(component)。
开始你的任务吧,祝你成功!
#请在此添加实现代码 ########## Begin ########## #在warehouse_db库中创建supply表 use warehouse_db; CREATE TABLE `supply` ( `supplyId` int(11) NOT NULL, `projectId` int(11) NOT NULL, `componentId` int(11) NOT NULL, `supplyCount` int(11) NOT NULL, PRIMARY KEY (`supplyId`), INDEX `FK_supply_supplyId`(`supplyId`), CONSTRAINT `FK_supply_supplyId` FOREIGN KEY (`supplyId`) REFERENCES `supplier` (`supplyId`), INDEX `FK_supply_projectId`(`projectId`), CONSTRAINT `FK_supply_projectId` FOREIGN KEY (`projectId`) REFERENCES `project` (`projectId`), INDEX `FK_supply_componentId`(`componentId`), CONSTRAINT `FK_supply_componentId` FOREIGN KEY (`componentId`) REFERENCES `component` (`componentId`) ); #在warehouse_db库中创建repertory表 CREATE TABLE `repertory`( `warehouseId` int(11) NOT NULL, `componentId` int(11) NOT NULL, `repertoryCount` int(11) NOT NULL, PRIMARY KEY (`warehouseId`), INDEX `FK_repertory_warehouseId`(`warehouseId`), CONSTRAINT `FK_repertory_warehouseId` FOREIGN KEY (`warehouseId`) REFERENCES `warehouse` (`warehouseId`), INDEX `FK_repertory_component_componentId`(`componentId`), CONSTRAINT `FK_repertory_component_componentId` FOREIGN KEY (`componentId`) REFERENCES `component` (`componentId`) ); ########## End ##########