2011-11-23 118 views
1

我對處理這種類型的數據的最佳方式有疑問。對象模型設計

在我的系統中,我將擁有許多用戶和許多帳戶......用戶可以屬於多個帳戶,並且帳戶將擁有許多用戶。我猜最好的方式來完成,這是三個用表

用戶

& users_accounts

我的問題是,當有人爲付費帳戶報...我應該在哪裏存儲區分帳戶和帳戶持有人的常規用戶的標誌? users_accounts表中是否應該有owner標誌?

回答

1

我可以假設,一個賬戶不能有一個以上的用戶(1對多的關係)?在這種情況下,兩桌就足夠了:

  • users
  • accounts

accounts包含用戶ID的參考。當沒有多對多關係時,單獨的關係表將是多餘的。

接下來的問題是:可以將用戶擁有有償和無償的帳戶?如果是這樣,該旗幟屬於accounts。否則,它屬於users


考慮到您的說明,您的三表設計是適當的。您的問題的答案完全取決於您想要付費帳戶的工作方式。

  • 付費用戶是否會在所有帳戶中具有額外功能?然後國旗屬於users
  • 任何用戶在付費帳戶中是否有額外的功能?然後國旗屬於accounts
  • 付費用戶是否僅在付費帳戶中具有額外功能?然後國旗屬於users_accounts

如果每個帳戶只有一個所有者,那麼你應該把代表在accounts表所有者的用戶ID。

+0

對不起,我想我沒有澄清。每個帳戶也有許多用戶。 – ThinkingInBits

+0

用戶不會有付費帳戶和未付款帳戶,但他們可能是'帳戶持有人'或者'帳戶成員' – ThinkingInBits

+0

在這種情況下,我會將該標誌存儲在帳戶表中。如果該帳戶已付款,則所有用戶都可以獲得付款,對嗎? –

0

Users表將只有用戶相關的數據...姓名,等等 accounts將有帳戶...類型和任何其他數據的信息...

的關鍵是users_accountsUsersaccounts之間的關係表,因此它將具有從Usersaccounts的任何鏈接數據,並且您應該放置該標誌,因爲在您設置關係時存在該標誌。

+0

那裏在users_accounts表中? – ThinkingInBits

+0

我對錶名稱感到困惑... users_accounts是關係表,那裏你應該把這個標誌...結構應該看起來像這樣: 'id - id_users - id_accounts - flag' – admin

0

將一個paid標記添加到user_account

例子屬性:

  • user (id, name, street ...)
  • account (id, name ...)
  • user_account (user_id, account_id, paid)

您可以通過paid列告訴我們,如果用戶是一個溢價賬成員與否。