E-R模型设计实战:3步完成物资管理系统概念结构设计(附完整ER图)

发布时间:2026/8/29 6:02:25

E-R模型设计实战:3步完成物资管理系统概念结构设计(附完整ER图)
E-R模型设计实战物资管理系统概念结构设计三步法1. 理解E-R模型的核心要素E-R模型Entity-Relationship Model作为数据库概念设计的核心工具由实体、属性和联系三大要素构成。不同于传统理论讲解我们直接从实战角度拆解这些要素在物资管理系统中的具体表现。实体识别要点仓库实体包含仓库号主键、面积、电话号码等属性零件实体包含零件号主键、名称、规格、单价等属性供应商实体包含供应商号主键、姓名、地址等属性项目实体包含项目号主键、预算、开工日期等属性职工实体包含职工号主键、姓名、年龄等属性属性设计原则1. **原子性**属性不可再分如地址应拆分为省/市/街道 2. **直接关联**属性必须直接描述所属实体 3. **避免冗余**相同属性不在多个实体重复出现 4. **业务约束**如单价必须0电话号码需特定格式联系类型判断技巧业务场景联系类型示例说明职工-仓库工作关系1:n一个仓库有多个职工职工仅属一个仓库仓库-零件存储关系m:n需通过库存联系实体记录数量供应商-项目-零件供应关系m:n:p三元联系需单独设计联系实体提示当发现属性值需要额外描述时如库存量说明应该将简单属性升级为联系实体2. 三步设计法实战演练2.1 第一步业务需求实体化通过需求分析会议我们提取出物资管理系统的核心业务语句供应商为项目提供多种零件零件分类存储在不同仓库职工负责特定仓库的管理工作实体-属性映射表| 实体 | 主键 | 常规属性 | 特殊约束 | |----------|-----------|------------------------------|------------------------| | 仓库 | 仓库号 | 面积, 电话号码 | 面积需≥50㎡ | | 零件 | 零件号 | 名称, 规格, 单价, 描述 | 单价精度保留2位小数 | | 供应商 | 供应商号 | 姓名, 地址, 电话号码, 账号 | 账号需唯一校验 | | 项目 | 项目号 | 预算, 开工日期 | 预算≥10000元 | | 职工 | 职工号 | 姓名, 年龄, 职称 | 年龄范围18-65岁 |2.2 第二步关系网络构建根据业务规则建立实体间的关联仓库↔零件多对多关系产生联系实体库存添加属性库存量erDiagram WAREHOUSE ||--o{ INVENTORY : 存放 INVENTORY }o--|| PART : 对应 INVENTORY { string warehouse_id FK string part_id FK int quantity }仓库↔职工一对多关系在职工实体中添加外键所属仓库号领导关系通过职工实体的自引用实现供应商↔项目↔零件三元多对多关系创建联系实体供应记录包含三个外键和供应日期、数量等属性关系设计检查清单[x] 每个m:n关系都转换为联系实体[x] 1:n关系的外键放置在多方实体[x] 自引用关系已明确标注如职工领导关系[x] 所有业务规则都能通过关系网络表达2.3 第三步ER图优化与验证通过Visio或Draw.io等工具绘制初始ER图后执行以下优化步骤冲突解决策略属性冲突统一所有日期字段为DATE类型命名冲突将姓名改为供应商名称/职工姓名结构冲突把仓库.保管员字段移除改用外键关系冗余检查方法-- 示例检查可推导数据 SELECT p.part_id, SUM(i.quantity) FROM parts p JOIN inventory i ON p.part_id i.part_id GROUP BY p.part_id;若可通过SQL计算得出的数据如总库存量则不应作为属性存储最终ER图特征包含5个实体矩形3个联系菱形库存/供应记录/领导关系所有属性以椭圆形连接关系基数明确标注1:n, m:n等3. 从概念模型到数据库实现3.1 模型转换规范按照以下规则将ER图转为关系模式实体转换CREATE TABLE warehouse ( warehouse_id VARCHAR(10) PRIMARY KEY, area DECIMAL(10,2) CHECK(area 50), phone VARCHAR(20) );联系转换1:n在多方表添加外键ALTER TABLE employee ADD COLUMN warehouse_id VARCHAR(10) REFERENCES warehouse(warehouse_id);m:n创建关联表CREATE TABLE inventory ( warehouse_id VARCHAR(10) REFERENCES warehouse(warehouse_id), part_id VARCHAR(10) REFERENCES part(part_id), quantity INT CHECK(quantity 0), PRIMARY KEY (warehouse_id, part_id) );3.2 典型业务场景映射场景查询某项目的零件供应商列表SELECT DISTINCT s.supplier_name FROM supplier s JOIN supply_record sr ON s.supplier_id sr.supplier_id JOIN project p ON sr.project_id p.project_id WHERE p.project_name 2024办公楼建设;场景计算各仓库存储价值SELECT w.warehouse_id, SUM(i.quantity * p.unit_price) AS total_value FROM warehouse w JOIN inventory i ON w.warehouse_id i.warehouse_id JOIN part p ON i.part_id p.part_id GROUP BY w.warehouse_id;3.3 性能优化建议索引策略CREATE INDEX idx_part_name ON part(part_name); CREATE INDEX idx_supply_date ON supply_record(supply_date);视图封装CREATE VIEW warehouse_inventory_view AS SELECT w.warehouse_id, p.part_name, i.quantity FROM warehouse w JOIN inventory i ON w.warehouse_id i.warehouse_id JOIN part p ON i.part_id p.part_id;数据归档设计CREATE TABLE supply_record_archive ( -- 与原表相同结构 archive_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP );4. 常见问题解决方案4.1 设计陷阱规避问题1过度使用属性错误做法在零件实体添加仓库列表字段正确方案通过库存联系实体表达问题2忽略业务约束-- 缺少约束的建表语句 CREATE TABLE employee ( employee_id VARCHAR(10), age INT -- 应添加 CHECK(age BETWEEN 18 AND 65) );问题3基数误判典型错误将仓库-零件误设为1:n关系验证方法确认同种零件可存多个仓库4.2 设计模式扩展层级结构处理erDiagram EMPLOYEE ||--o{ EMPLOYEE : 领导 EMPLOYEE { string employee_id PK string name string position string manager_id FK }历史数据追踪ALTER TABLE inventory ADD COLUMN ( last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_by VARCHAR(10) REFERENCES employee(employee_id) );4.3 模型演进策略当新增设备租赁业务时新增租赁实体建立与供应商的多对多关系添加租赁状态、期限等属性保持原有模型兼容性CREATE TABLE lease ( lease_id VARCHAR(10) PRIMARY KEY, start_date DATE, end_date DATE CHECK(end_date start_date), status ENUM(active, expired, terminated) ); CREATE TABLE supplier_lease ( supplier_id VARCHAR(10) REFERENCES supplier(supplier_id), lease_id VARCHAR(10) REFERENCES lease(lease_id), equipment_details TEXT, PRIMARY KEY (supplier_id, lease_id) );

相关新闻

深度学习计算图与反向传播原理详解:从手动实现到梯度流动

深度学习计算图与反向传播原理详解:从手动实现到梯度流动

2026/8/29 12:18:00

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个深度学习框架中的核心概念:计算图与反向传播。对于任何想要深入理解神经网络训练过程,特别是…

Halcon measure_pairs vs measure_pos:5个工业场景详解边缘对与单边缘测量选择

Halcon measure_pairs vs measure_pos:5个工业场景详解边缘对与单边缘测量选择

2026/8/27 17:26:18

Halcon一维测量实战指南:边缘对与单边缘测量的五大工业场景解析引言在工业视觉检测领域,精确的尺寸测量是质量控制的核心环节。Halcon作为机器视觉领域的标杆软件,其measure_pairs和measure_pos算子已成为一维测量的两大支柱工具。但许多工程…

PE Micro 驱动 v12 与 PKGPPCNEXUSSTARTER 在 Windows 11 下的 2 类兼容性问题解决

PE Micro 驱动 v12 与 PKGPPCNEXUSSTARTER 在 Windows 11 下的 2 类兼容性问题解决

2026/8/29 11:11:59

PE Micro驱动v12与PKGPPCNEXUSSTARTER在Windows 11下的兼容性深度解决方案1. Windows 11环境下的驱动安装挑战Windows 11作为微软最新的操作系统,在安全机制和系统架构上进行了多项革新,这给嵌入式开发工具的兼容性带来了新的挑战。PE Micro驱动v12作为一…

Vue3使用触摸滑动插件(Swiper)

Vue3使用触摸滑动插件(Swiper)

2026/8/29 13:10:21

Vue2使用触摸滑动插件(Swiper) 参考文档: Swiper官方 Swiper API Swiper Vue Swiper Demos 本文使用版本:Swiper12.0.3 安装插件:pnpm add swiper 本文基于Swiper插件进行封装,主要实现两种形式的轮播…

Vue3评分(Rate)

Vue3评分(Rate)

2026/8/29 13:10:21

可自定义设置以下属性: 是否允许再次点击后清除(allowClear),类型:boolean,默认 true 是否允许半选(allowHalf),类型:boolean,默认 false star…

Vue3二维码(QRCode)

Vue3二维码(QRCode)

2026/8/29 13:10:21

可自定义设置以下属性: 扫描后的文本或地址(value),类型:string,默认 undefined 二维码的渲染类型(type),类型:svg | canvas | image,默认 svg …

Vue3图片(Image)

Vue3图片(Image)

2026/8/29 13:10:21

本图片预览组件主要包括以下功能: 展示图片时,可设置鼠标悬浮时的预览文本;图像无法加载时要显示的描述;自定义图像高度和宽度;设置图像如何适应容器高度和宽度(fill | contain | cover | none | scale-dow…

Vue3空状态(Empty)

Vue3空状态(Empty)

2026/8/29 13:10:21

可自定义设置以下属性: 自定义描述内容(description),类型:string | slot | null,默认 暂无数据 设置描述文本的样式(descriptionStyle),类型:CSSPropertie…

初识 Free RTOS

初识 Free RTOS

2026/8/29 13:00:18

一、FreeRTOS简介Free RTOS(Real Time Operating System,实时操作系统),顾名思义,一款免费的实时操作系统。作为一种专门设计用于处理实时任务的操作系统。与通用计算机上运行的桌面操作系统(如Windows、Li…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/29 10:22:10

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/28 7:34:42

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

四款热门降AI工具测评:研究生和本科生怎么选?

四款热门降AI工具测评:研究生和本科生怎么选?

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

论文降AI率免费攻略:自查、提示词与工具推荐

论文降AI率免费攻略:自查、提示词与工具推荐

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

2026/8/29 0:09:39

前言:预算有限的企业更关心投入能否形成可持续的品牌资产。评估北京GEO优化服务商时,不能只比较单篇内容或单月报价,还要看是否能够把问题词、官网、信源和监测串成完整链路。本期重点放在预算配置、试点范围和交付边界,帮助企业先…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…