mysql - 数据建模 : ethnicities with parent-child relationship?

标签 mysql database data-modeling database-design

我有一个网站,我希望用户能够识别他们的种族。如果只有 1 层层次结构,最好的建模方法是什么?

方案一(单表):

Ethnicity
- Id
- Parent Id
- Name

方案二(两张表):

Ethnicity Group
- Id
- Name

Ethnicity
- Id
- Ethnicity Group Id
- Name

我将使用它,以便用户可以根据种族搜索其他用户。这两种方法中哪一种更适合我?还有其他我没有考虑过的方法吗?我正在使用 MySQL。

最佳答案

嗯,现实世界中存在种族组这样的东西,所以您确实需要两张表,而不是一张。现实世界有三个层次(最上面的是种族),但我知道这里可能没有必要。如果将三个级别压缩为两个级别,则必须小心,并在开始时将它们全部布置好。然而,他们很容易受到人们说他们想要真实的东西的伤害,你可能不得不改变它,或者改变结构以适应更多......以后更多的工作)。

如果您按照现实世界正确地进行操作,则可以消除该问题。如果您想要 Race,请告诉我,我会更改模型。

表太小,键太有意义,无法向其中添加 Id-iot 列;将它们保留为纯关系键,否则您将失去关系引擎的强大功能。如果您真的想要窄键,请使用 CHAR(2) EthnicityCode,而不是 NUMERIC(10,0) 或无意义的数字。

Link to Ethnicity Data Model (加上你其他问题的答案)

Link to IDEF1X Notation对于那些不熟悉关系建模标准的人。

关于mysql - 数据建模 : ethnicities with parent-child relationship?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262486/

相关文章:

php - 获取 Doctrine 2 中的相关条目

python - 在 Windows 中从 Python 使用 MySQL 的过程是什么?

mysql - 我的模型的数据建模、约束和问题

mysql - 数据库设计——一个链接表还是多个链接表?

php - 触发计算,在插入一张表时影响另一张表

mysql - 我如何像格式化程序一样构造 SQL 代码,以使其通过 SQL 命令更好地读取到数据库

mysql - 如何以逗号分隔的字符串形式连接表格?

mysql - 保证快速响应,预计 1 秒行数

php - 如何分解一条线然后再次分解它以将其插入数据库

machine-learning - 解释随机森林模型结果