1. 数据模型设计
数据模型设计是数据库设计的核心环节,是对现实世界中数据特征及其相互关系的抽象描述,构建了数据库系统的核心与基础。它通过定义数据的结构、关系和约束条件,为数据的组织、存储和操作提供了一个框架,其优劣直接关乎数据库系统的性能、可维护性与扩展性。
数据模型设计一般分为三个层次,从高到低依次为概念数据模型设计、逻辑数据模型设计和物理数据模型设计。
- 概念数据模型:主要关注业务概念及其关系,帮助团队沟通业务需求,确保项目范围的清晰,通常不涉及技术细节;
- 逻辑数据模型:对概念模型的进一步细化,侧重于数据存储的逻辑结构,为数据库设计和开发提供具体指导;
- 物理数据模型:对逻辑模型的具体实现,描述了数据在存储介质上的组织结构,考虑了具体的技术平台和实施细节 。
概念、逻辑、物理三种数据模型设计,分别对应 “业务抽象→结构规范→落地实现” 三个核心阶段,这三个层次层层递进,逐步将抽象的业务需求转化为可在计算机系统中实现的具体数据结构和存储方式。
2. 概念数据模型设计(有什么)
聚焦 “业务抽象”,讲清 “有什么”
核心是脱离技术细节,用业务语言梳理数据关系,重点在于让不同角色(产品、业务、技术)达成共识。
核心任务:提取业务中的核心实体(如电商中的 “用户”“商品”“订单”)、明确实体间关系(如 “用户 - 下单 - 订单” 是一对多关系)、梳理实体的关键属性(如 “用户” 需包含 “手机号”“姓名”)。
关键输出:ER 图(实体 - 关系图),不涉及字段类型、主键等技术细节,仅体现业务逻辑。
设计重点:确保覆盖全部核心业务场景(如电商需包含 “退货”“退款” 相关实体),避免遗漏关键关系(如 “订单” 与 “支付记录” 的关联),不纠结技术实现。
3. 逻辑数据模型设计(怎么组织)
聚焦 “结构规范”,讲清 “怎么组织”
核心是将概念模型转化为结构化的数据框架,衔接业务与技术,重点在于规范数据结构、保障一致性。
核心任务:定义实体对应的 “表结构”(如 “订单表” 需包含 “订单编号”“用户 ID”“总金额” 等字段)、确定字段规则(类型、是否必填、默认值)、设置主键外键(建立表间关联,如 “订单表” 用 “用户 ID” 关联 “用户表”)、遵循范式(减少数据冗余,如避免在订单表重复存储用户姓名)。
关键输出:规范化的表结构文档、带字段约束的 ER 图,不绑定具体数据库(如不考虑 MySQL 或 Oracle 的差异)。
设计重点:平衡 “规范性” 与 “实用性”(如非核心表可适当反范式减少关联查询)、预留扩展空间(如用 TINYINT 存状态,方便后续新增状态值)、确保数据一致性(如外键约束防止无效关联)。
4. 物理数据模型设计(怎么存)
聚焦 “落地实现”,讲清 “怎么存”
核心是根据具体数据库特性,将逻辑模型转化为可执行的存储方案,重点在于适配数据库、优化性能。
核心任务:根据数据库类型(如 MySQL、Oracle)调整字段类型(如 MySQL 用INT,Oracle 用NUMBER)、设计索引(如为 “订单编号”“用户 ID” 加索引提升查询速度)、规划存储细节(如分表分库策略、表空间分配)、设置数据库特有属性(如 MySQL 的引擎选择 InnoDB)。
关键输出:可直接执行的建表 SQL 语句、数据库存储方案文档。
设计重点:适配目标数据库特性(如不同数据库的字段长度限制不同)、优化存储性能(如高频查询字段加索引,大表用分区减少查询压力)、考虑运维便利性(如统一表命名规范,方便后续维护)。