2011-10-19 53 views
0

我想創建一個具有實體(用戶和開發人員)的Web服務。面向用戶和開發人員的數據庫設計

開發者可能是也可能不是用戶(我希望他在大多數情況下是用戶)。他可以使用Web API在我的Web服務之上創建他的應用程序。示例 - Facebook允許我們在developer.facebook.com上創建應用程序,在這裏我們使用我們的FB賬戶登錄。

我的查詢是 - 我應該爲用戶和開發人員創建單獨的表嗎?用戶具有一些典型開發人員不需要的屬性。開發者可以看到典型用戶不會看到的某些功能。

權衡是 - 對於2個單獨的表格,將會有冗餘數據,但我希望與用戶相比少數開發者。

對於同一個表 - 將會有多餘的屬性。

這種情況下最好的設計是什麼?

回答

0

我認爲這取決於您的通用用戶與開發人員的差異。開發人員需要哪些額外的字段?如果沒有,那麼答案很簡單:兩個表都是。 您甚至可能會考慮與僅具有額外字段和user_id的開發人員表進行某種繼承關係。

你認爲你可能有什麼額外的領域?

0

如果既沒有完全從另一個繼承,那麼使用2個單獨的表格也是有意義的。當然,他們可能有一些類似的屬性,但我收集你永遠不會真正使用用戶/開發人員互換。

如果您真的擔心冗餘,另一種方法是自動將任何開發人員簽名爲用戶,但具有附加屬性,這些屬性將存儲在開發人員表的相關記錄中。

總之,如果實體真的是100%獨立的,並且開發人員必須註冊一次開發人員而另一次作爲用戶註冊(賬戶之間沒有鏈接),那麼他們可能屬於2個獨立的表格。但是,如果開發人員可以被看作是一種具有擴展屬性的「超級用戶」,那麼我會將所有基本記錄存儲在Users表中,並將Developer屬性添加到他們自己的表中(第二種情況聽起來更可能對我來說)。