有時,我開始製作圖表時很難看到實體和列之間的差異。我不知道它應該是一個實體還是一個專欄。例如,在某些遊戲中,如果您有用戶,並且該用戶可以自己玩,或者可以在該組中玩。你會做出這兩個不同的實體User
和GroupUser
?如何查看實體和列之間的差異
此外,例如,如果User
有他們獲得的等級,狀態和徽章是遊戲的一部分。這些會是實體還是它們只會在一個實體中成爲用戶的一部分?
有時,我開始製作圖表時很難看到實體和列之間的差異。我不知道它應該是一個實體還是一個專欄。例如,在某些遊戲中,如果您有用戶,並且該用戶可以自己玩,或者可以在該組中玩。你會做出這兩個不同的實體User
和GroupUser
?如何查看實體和列之間的差異
此外,例如,如果User
有他們獲得的等級,狀態和徽章是遊戲的一部分。這些會是實體還是它們只會在一個實體中成爲用戶的一部分?
Entity
可能是一個Person
(如學生),Place
(例如會議室名稱),Object
(如圖書),Abstract Concept
(如課程,訂購),可以在數據庫中表示,通常可以在您的Database
成爲Table
。
Column(s)
另一方面您使用的是Entity
的屬性。
所以,你的情況,你有一個用戶實體和可能的列或屬性(或字段) UserID
,UserLevel
,UserStatus
,Badges
,PlayStatus
(值可以是個人或團體)。
您的Badges
雖然列可能會變成Entity
如果它違反了Normalization
rules。
例如,如果您有此表的用戶:
Table: Users
UserID UserName UserStatus PlayStatus Badges
------ -------- ---------- ---------- ------
1 Surefire Active Single Private, Warrior, Platoon Leader
2 FastMachine Active Group Private, Warrior
3 BeatTheGeek Inactive Group Private
徽章這裏違反了1NF (1st Normal Form)
在Normalization
規則,說,不應該有重複的組或在這種情況下,沒有多值列。所以,這可能等標準化:
Table: Users
UserID UserName UserStatus PlayStatus
------ -------- ---------- ----------
1 Surefire Active Single
2 FastMachine Active Group
3 BeatTheGeek Inactive Group
Table: Badges
BadgeID BadgeName
------ --------
1 Private
2 Indie
3 Warrior
4 Platoon Leader
5 Colonel
6 1 Star General
7 2 Star General
8 3 Star General
9 4 Star General
10 5 Star General
11 Hero
Table: UserBadgesHistory
UserID BadgeID ReceiveDate
------ -------- -----------
1 1 12/01/2013
1 3 12/05/2013
1 4 1/5/2014
2 1 2/5/2014
2 3 2/10/2014
3 2 11/10/2013
一般情況下,一個實體都有自己的多個列(即屬性),列(或屬性)不。
在您的示例中,如果您有興趣存儲的唯一數據是用戶當前的級別,那麼級別不太可能是實體。這是因爲它只有一個名稱/編號的屬性。如果您想查找當前處於第4級的所有用戶,只需使用level = 4
執行查詢。另一方面,如果您有理由添加關於關卡的額外數據,例如哪些功能與該關卡相關聯或某個特定用戶達到關卡的日期,則您需要將關卡分開實體。
Level實體將擁有一個ID,一個數字或名稱以及您需要的任何其他屬性作爲數據。
ID | Prerequisite | Ability
----+--------------+--------------
1 | NULL | May gain foos
2 | Gain 10 foos | May gain bars
3 | Gain 20 bars | 30 free foos
在一個完全規範化的狀態,你會叫的UserLevel另一個實體,其中,當某個用戶獲得一個水平,你將存儲的數據有關,例如。
UserLevel實體將包含LevelID和UserID作爲外鍵(鏈接回其他實體),以及DateAchieved列用於何時達到該級別。
LevelID | UserID | DateAchieved
---------+--------+-------------
1 | 1 | 2014-02-01
1 | 2 | 2014-02-01
2 | 1 | 2014-02-05
3 | 1 | 2014-02-09
2 | 2 | 2014-02-11
4 | 1 | 2014-02-13
這顯示了用戶1和用戶2在同一天從第1級開始並以不同速率升級。
正是我尋找的答案。在大多數情況下,您將擁有超過1個關卡,並在您想要追蹤任務的地方擁有更多數據。像布爾task1,task2 task3等所以是的,這將是一個實體。 – Ris
所以如果你剛開始做一個概念設計的圖表,你仍然會有徽章一個單獨的實體?...你製作徽章獨立的實體,因爲有多種類型的徽章? – Ris
是的,在概念設計圖中,徽章是一個獨立的實體,因爲基數是一對多的,也就是說,用戶可以有一個或多個徽章(如果是強制性的)或零個或多個徽章(如果它是可選的)。 – Edper
你做了我的夜晚..最後我明白我問了什麼!...很高興你在這裏提到了重複的團體..謝謝你 – Ris