[SQL ] 文章觀看權限,欄位設計
假設有 [會員資料表] MemberTable
ID 會員編號
Name 會員暱稱
Level 會員等級 (分成 A B C D) 四種
然後 [文章資料表] ArticleTable
ID 文章編號
Title 文章標題
Content 文章內文
如果想要限制各文章的觀看權限
欄位該怎設計呢?
1. 想法一
文章資料表,再增加四個欄位
型態
Level_A (bit) 若為1 則等級A可觀看
Level_B (bit) 若為1 則等級B可觀看
Level_C (bit) 若為1 則等級C可觀看
Level_D (bit) 若為1 則等級D可觀看
2. 想法二
再增加一張資料表,儲存各文章ID以及開放給ABCD權限
[文章觀看權限資料表] ArticleLevel
欄位有
ID 文章代碼
Level 觀看權限
例如目前有 ID 1、2、3 三篇文章
文章1 開放A、B
文章2 開放A、B、C、D
文章3 開放C、D
那ArticleLevel 這張的資料表目前裡面資料就有
[1,A] [1,B]
[2,A] [2,B] [2,C] [2,D]
[3,C] [3,D]
這八筆資料,會員觀看時就能根據自己會員等級去join符合自己權限的表。
結論:
哪一種做法會比較恰當呢?
感覺做法二還要多浪費一張表去儲存,但可以依據SQL語法去join即可
至於做法一在程式中還必須根據bit值去寫一些額外的程式碼來判斷
不曉得哪一種方法比較好呢? 或是有其他設計方法
接觸資料庫的經驗還不是那麼資深,希望可以指教一下 謝謝各位。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.113.62
→
06/06 00:43, , 1F
06/06 00:43, 1F
→
06/06 00:45, , 2F
06/06 00:45, 2F