Mysql 数据建模:具有亲子关系的种族?

Mysql 数据建模:具有亲子关系的种族?,mysql,database,data-modeling,database-design,Mysql,Database,Data Modeling,Database Design,我有一个网站的用户,我希望用户能够识别他们的种族。如果只有一个层次,那么最好的建模方法是什么 解决方案1(单表): 解决方案2(两个表): 我将使用它,以便用户可以根据种族搜索其他用户。这两种方法中哪一种更适合我?有没有其他方法我没有考虑过?我使用的是MySQL。如果现实世界中没有类似于“种族群体”的东西,我建议您不要在数据模型中引入种族群体 您可以对第二个查询执行的所有查询您也可以对第一个查询执行,因为您可以只选择从种族作为e1加入种族作为es ON(e2.ocidentity\u id=e1

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

解决方案1(单表):

解决方案2(两个表):


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

如果现实世界中没有类似于“种族群体”的东西,我建议您不要在数据模型中引入种族群体


您可以对第二个查询执行的所有查询您也可以对第一个查询执行,因为您可以只选择
从种族作为e1加入种族作为es ON(e2.ocidentity\u id=e1.parent\u id)

如果现实世界中没有类似于“种族组”的查询,我建议您不要在数据模型中引入种族组


第二个查询可以执行的所有查询也可以使用第一个查询,因为您只需选择
从种族作为e1连接种族作为es ON(e2.ocidentity\u id=e1.parent\u id)

在现实世界中存在种族组,因此您确实需要两个表,而不是一个表。现实世界有三个层次(最高层次是种族),但我明白这在这里可能没有必要。如果你把三个关卡压成两个关卡,你必须小心,并在一开始就把它们放好。然而,当人们说他们想要真实的东西时,他们会很脆弱,你可能不得不改变它,或者改变结构以适应更多的。。。以后还要做更多的工作)

若你们按照现实世界的说法做得正确,那个么这个问题就消除了。如果你想参加比赛,请告诉我,我会更换型号

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

(加上你另一个问题的答案)


对于那些不熟悉关系建模标准的人来说。

在现实世界中有一个种族群体,所以你需要两个表,而不是一个。现实世界有三个层次(最高层次是种族),但我明白这在这里可能没有必要。如果你把三个关卡压成两个关卡,你必须小心,并在一开始就把它们放好。然而,当人们说他们想要真实的东西时,他们会很脆弱,你可能不得不改变它,或者改变结构以适应更多的。。。以后还要做更多的工作)

若你们按照现实世界的说法做得正确,那个么这个问题就消除了。如果你想参加比赛,请告诉我,我会更换型号

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

(加上你另一个问题的答案)


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

我不想显得尴尬,但是你打算如何处理混血儿呢?我认为最好的方法是简单的单级统计,就像你在人口普查表上看到的那样(例如“黑人”、“白人”、“亚裔”、“西班牙裔”等等)。这并不理想,但它可以让人们相当容易地自我识别。种族和种族之类的概念已经够模糊的了,不需要在它们上面建立额外的(基本上毫无意义的)等级制度,所以我的直觉是保持简单。

我不想尴尬,但你打算怎么处理混血儿呢?我认为最好的方法是简单的单级统计,就像你在人口普查表上看到的那样(例如“黑人”、“白人”、“亚裔”、“西班牙裔”等等)。这并不理想,但它可以让人们相当容易地自我识别。种族和种族等概念很模糊,不需要在它们上面建立额外的(基本上毫无意义的)等级制度,所以我的直觉是保持简单。

如果只有一个等级制度,怎么会有种族集团?如果只有一个等级制度,怎么会有种族集团?我从来没听人说过“亚裔群体的人”,但在这种情况下,继续创建“亚裔群体”表。你的数据库结构应该模拟现实。我从未听过有人说“亚裔群体的人”,但在这种情况下,继续创建你的“亚裔群体”“桌子。您的数据库结构应该模拟现实。用户将能够选择0个或多个种族。用户将能够选择0个或多个种族。@SONewbie。谢谢你还没有回答你是想要比赛(3级)还是2级。我还在考虑。也许这足以满足我的需要:“亚洲人、日本人”、“亚洲人、韩国人”等等。也许我并不真正需要这种等级观念。还不确定。仍在考虑如何使用这些数据。如果我真的需要层次结构,我想我只需要2个。@SONewbie。谢谢你还没有回答你是想要比赛(3级)还是2级。我还在考虑。也许这足以满足我的需要:“亚洲人、日本人”、“亚洲人、韩国人”等等。也许我并不真正需要这种等级观念。还不确定。仍在考虑如何使用这些数据。如果我需要层次结构,我想我只需要2个。
Ethnicity
- Id
- Parent Id
- Name
Ethnicity Group
- Id
- Name

Ethnicity
- Id
- Ethnicity Group Id
- Name