MySQL中的分层关系数据库设计

Posted

技术标签:

【中文标题】MySQL中的分层关系数据库设计【英文标题】:Hierarchical Relational Database Design in MySQL [duplicate] 【发布时间】:2014-02-19 02:49:03 【问题描述】:

我对 SQL 和 mysql 还很陌生。我正在 MySQL 中设计一个关系数据库来存储我在社交活动中遇到的各种人的联系信息。我想让数据库尽可能标准化,但在设计公司、部门和职位之间的层次关系时遇到了困难。我仍然只是在纸上设计这个数据库。

例如在金融领域,您可以在 J.P. Morgan 的投资银行部门工作。该部门有几个子部门,例如ECM。在 ECM 内部还有其他细分。因此,一个人可能是摩根大通 > 投资银行 > ECM > 销售 > 分析师,其中投资银行、ECM 和销售都是彼此的子部门,摩根大通是公司,分析师是工作。

但是,对于其他职业,例如自雇人士,工作可能不属于任何部门。因此,SelfEmployedBiz > SelfEmployed。

显然,我的问题是一些工作属于多个细分,而其他工作属于零细分。

我的问题:我该如何设计这部分数据库?我唯一能想到的就是添加几个分区表(TopDivision、SecondDivision、ThirdDivision 等),但这看起来既混乱又尴尬。有没有更好的办法?

如何设计一个

【问题讨论】:

谷歌“非常感谢” 【参考方案1】:

您可以在部门表中建立自引用关系。像这样:http://schemadeck.com/c3uuhb

parent_division_id 引用同一个表中的另一行。

【讨论】:

以上是关于MySQL中的分层关系数据库设计的主要内容,如果未能解决你的问题,请参考以下文章

范式及其在mysql数据库设计中的应用

web项目分层设计

范式(设计规范)

MySQL中的关系

关系数据库设计(MySQL)

MYSQL01_数据库的概述关系型和非关系型数据库区别设计规则