年份、单位、单位成员逻辑关系的设计

0 评论 104 浏览 0 收藏 5 分钟

数据库设计中,年份、单位与成员的关系处理往往暗藏玄机。本文通过两种典型设计方案对比,深入剖析关联表与冗余存储的取舍逻辑,揭示数据结构如何影响业务灵活性与系统性能。从多对多关系到间接关联,每种设计背后都对应着不同的业务场景与数据完整性考量。

以年份、单位、单位成员逻辑关系设计为具体实例,用以反思三个字段逻辑关系设计不同时的数据结构等。

年份与单位/单位成员需要关联,但连接方式不同,在数据和代码处理上有所不同。

分析两种关联方式在数据库中的不同

设计方式1:年份与单位关联

(1)说明:创建单位,填写单位名称,同时选择年份。

(2)设计理解:年份-单位,单位是年份下的单位。

(3)业务猜想:有一种活动,每年活动的负责单位不确定。

(4)数据表设计:

Unit表,unit_id unit_name

Year表,year_id year_name

Unit_ Year表,unit_ year_id unit_id year_id

Member表,member_id member_name unit_year_id

(5)关联特点:

单位:届别 = 多对多(通过关联表)

成员:单位-届别 = 多对一

(6)三级关联:

单位→单位-届别→成员

(7)数据完整性:

成员必须加入一个已有年份的单位。

单位需先声明参与哪些届别,成员才能加入。

(8)存储说明:

额外存储关联表,增加存储开销。

避免了冗余存储单位。

(9)原型设计:单位必须先设置年份,成员再属于某年份下的某单位。

(10)使用建议:

单位-届别有独立属性:如届别特定的单位预算、负责人等。

数据一致性要求高:需要确保组合有效。

批量操作多:经常为单位分配届别。

历史数据重要:需要跟踪单位-届别关系变化。

设计方式2:年份与单位成员关联

(1)说明:添加成员到单位,同时选择成员年份。

(2)设计理解:单位、年份-成员,成员是单位下的成员,成员是年份下的成员。

(3)业务猜想:单位工作成员固定,每年开展活动,可以是不同单位,但单位成员变化不大。

(4)数据表设计:

Unit表,unit_id unit_name

Year表,year_id year_name

Member表,member_id member_name unit_id year_id

(5)关联特点:

成员:单位 = 多对一

成员:届别 = 多对一

单位:届别 = 间接关联(通过成员)

(6)二级关联:

成员→单位+成员

成员→年份+成员

(7)数据灵活性:

成员可以只是某单位的成员。

成员可以只是某年份的成员。

(8)存储说明:

成员表存储两个外键,数据行大,较设计1易产生冗余。

表结构简单。

(9)原型设计:成员可以分别独立设置年份或单位。

(10)使用建议:

简单快速开发:原型系统或MVP。

查询性能优先:高频查询成员信息。

单位届别关系简单:没有额外属性。

数据量小:不需要复杂优化。

本文由 @产品-子鱼 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!