我有一个网站,我希望用户能够识别他们的种族。如果只有 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/