作者momoCry (momo哭了)
看板Database
标题[SQL ] 文章观看权限,栏位设计
时间Wed Jun 5 22:24:40 2013
假设有 [会员资料表] 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
1F:→ lbeeon:个人觉得如果你的LEVEL是固定四个那方法一处理起来会比较 06/06 00:43
2F:→ lbeeon:便,另外如果你的权限是有阶层概念,那或许可以利用level>X 06/06 00:45