2011-03-06 52 views
4

基本上我爲我的用戶(它是夜總會網站)的表,現在我試圖改善他們的隱私。數據庫設計 - 用戶和他們的隱私

直到現在我只是顯示一些信息登錄用戶,但現在我想給這個選擇給用戶。

我的問題是:什麼是更好的方法來做到這一點?

你推薦我什麼,爲每個屬性創建一個新的屬性,我希望用戶管理隱私?表中的

實施例 「用戶」:

-Id

-Email

- 電話

-ShowEmail(int)和0將是沒有人,1登錄用戶和2朋友

-ShowPhone(INT)

這是一個很好的選擇?我不太確定我是否應該創建一個新表來處理隱私設置。我必須承認數據庫設計不是我的專業,所以真的需要一些反饋。

謝謝!

編輯:隱私不僅僅是簡單的屬性。我需要處理用戶註冊的事件,用戶標記的照片等。

回答

2

這是一種可能性,但它使您的表非常大,並且有相當多的字段。您有兩個我個人更喜歡的選項:

  1. 使用flag字段。優點是你只需要1個字段,這有點違背良好的關係數據庫實踐,並且如果你想從中選擇一些,查詢變得更加模糊。
  2. 使用另一個只有3個字段的表格,例如「UserID」,「FieldName」和「ShowTo」,後者是一個ENUM(或者如果你更喜歡它,則爲整數)。這是更多的工作,但是非常清晰,而且更好。

查詢會是這個樣子: 1.

SELECT phone, (privacyFlags&8) AS showPhone FROM users 

2.

SELECT user.phone, privacy.ShowTo AS showPhone FROM users 
    JOIN privacy ON privacy.userID=users.userID 
WHERE privacy.FieldName = 'phone'