2011-09-24 59 views
0

這是一個問題,從另一個問題在這裏的後果出現了:Is it better to have two separate user tables or one?哪個唯一的ID用於博客和評論?

假設我有兩種類型的用戶,作者和讀者,每個存儲在鍵入到主賬戶的表像這樣的關係表:

TABLE Accounts { 
    id 
    email 
    password 
    salt 
    created 
    modified 
} 

TABLE reader { 
    id 
    user_id 
    ... 
} 

TABLE author { 
    id 
    user_id 
    ... 
} 

當作者發佈博客時,我應該使用Authors表中的唯一標識還是帳戶表中的唯一標識來標記博客?讀者評論也一樣 - 我應該使用Reader表唯一ID還是帳號表唯一ID標記評論?

所以,基本上可以:

TABLE Blogs { 
    id 
    author_id 
} 

OR

TABLE Blogs { 
    id 
    account_id 
} 

這是不太可能咬回來以後?

+0

帳戶。爲什麼'Reader'或'Author'表有一個獨特的'id'呢? – mario

+0

嗯,我可能是錯的,但從我的理解來看,使用標準的自動遞增鍵來鍵入表是一件好事。再次,我不是專業人士。 – johnnietheblack

+1

您可以將'Reader'和'Author' id列作爲'Accounts'的外鍵,以便使用哪個'id'是無關緊要的。 –

回答

3
TABLE user { 
    id 
    email 
    password 
    salt 
    created 
    modified 
} 

TABLE profile { 
    user_id 
    age 
    favorite_movie 
    ... other useless stuff... 
} 

TABLE user_role { 
    user_id 
    role_id 
} 

TABLE role { 
    id 
    name (author, admin, user, subscriber, etc...) 
} 

TABLE blog { 
    id 
    user_id 
    title 
    text 
    ...etc... 
} 


user HASMANY role 
user HASONE profile 
user HASONE blog 

所以用戶可以是管理員和作者。您可以通過查找 來查找他們的博客,以獲取此user_id的匹配博客。如果您有賬戶類型相關字段 ,則將它們全部放在「配置文件」表中。

1

只有你可以完全回答,但我的直覺說博客條目應該由作者標記。在概念上使用帳戶的唯一原因是如果非作者可以創建(作者)博客文章。到目前爲止,根據所提供的信息,這看起來並非如此。

請注意,我也認爲所有作者都應該是用戶:每個人都是用戶,但只有一些用戶也具有作者身份。

+0

感謝您的回答......實際上,在這種情況下,作者和用戶有一組截然不同的權限,這些權限大多不重疊。這絕對是一個奇怪的情況。用戶和關注作者,閱讀博客。作者不能跟隨任何人,但他們可以寫博客。 – johnnietheblack

+0

因此作者無法閱讀您的網站? – horatio

+0

他們可以閱讀是...其更多的是與用戶的橫向關係,而不是垂直。如果這是有道理的...... – johnnietheblack