簡體   English   中英

數據建模:具有親子關系的種族?

[英]Data Modeling: ethnicities with parent-child relationship?

我有一個用戶站點,希望用戶能夠識別他們的種族。 如果只有1個層次結構,最好的建模方法是什么?

解決方案1(單表):

Ethnicity
- Id
- Parent Id
- Name

解決方案2(兩個表):

Ethnicity Group
- Id
- Name

Ethnicity
- Id
- Ethnicity Group Id
- Name

我將使用它,以便用戶可以根據種族搜索其他用戶。 這兩種方法中的哪一種對我更有效? 我還有沒有考慮過的另一種方法? 我正在使用MySQL。

好吧,在現實世界中有一個“族裔群體”之類的東西,因此您確實需要兩個表,而不是一個。 現實世界具有三個級別(最高的級別是“種族”),但我知道這里可能沒有必要。 如果將三個級別壓縮成兩個級別,則必須小心,並在開始時將它們全部正確布置。 但是,他們會很容易受到人們說他們想要真實事物的攻擊,您可能必須更改它,或更改結構以使其更適合……以后需要更多工作。

如果按照現實世界正確執行此操作,則可以消除該問題。 讓我知道您是否要參加比賽,我將更改其型號。

這些表太小了,鍵也太有意義了,以至於無法向它們添加Id-iot列。 將它們保留為純關系密鑰,否則您將失去關系引擎的功能。 如果您確實想要窄鍵,請使用CHAR(2)種族代碼,而不要使用NUMERIC(10,0)或無意義的數字。

鏈接到種族數據模型 (以及您其他問題的答案)

對於不熟悉關系建模標准的人,請鏈接到IDEF1X符號

如果在現實世界中沒有像“民族團體”這樣的人,我建議您不要在數據模型中引入一個人。

您可以對第二個查詢進行的所有查詢也可以對第一個查詢進行查詢,因為您可以選擇FROM ethnicity AS e1 JOIN ethnicity AS es ON (e2.ethnicity_id = e1.parent_id)

我不想尷尬,但是您將如何處理混血兒? 我認為,您所希望的最好的辦法是進行簡單的單級枚舉,例如以普查形式獲得的東西(例如“黑人”,“白人”,“亞洲人”,“西班牙裔”等)。 這不是理想的方法,但是它使人們可以輕松地自我識別。 種族和種族之類的概念已經足夠粗略,而無需嘗試在它們之上創建其他(基本上沒有意義的)層次結構,因此,我的直覺是保持簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM