作者tedcat (动静:MSN昵称为主)
看板Database
标题Re: [SQL ] mysql资料表的设计
时间Sat May 22 16:48:58 2010
: 栏位内容是bool 1表示有勾选,0表示没勾选
从你的描述来看,你的这个表储存的似乎是所有的运作项目类型,
(而不是每个人勾选的结果???)
: 因为万一要增加新的球类,可能其他栏位会被影响到
: 还有每次都抓field里的资料,这样会不会造成效率低落?
: 另外就是蒐寻的时候,若是用bool值,就完全没办法用比对字串的方式。
: 如:想找喜欢棒球的人
一般来说,这类的设计方式如下:
{运动类型} sid[int,primary key],sid_name[varchar],sid_description....
{人员资料表} pid[int,primary key],pid_name[varchar],.....
{个人运动喜好纪录} cid[bigint,primary key],pid[int],sid[int]...
举例如下:
{运动类型}
1 排球 我很认真我喜欢排球
2 网球 网球妹很正
3 篮球 篮球啦啦队妹身材波涛汹涌
4 宅男 网路上最多正妹了啦
5 变态 已经精神不正常了
{人员资料表}
1 大一
2 大二
3 大四
4 上班族
5 老头
则{个人运动喜好纪录}可能如下
1 1 1
2 1 2
3 2 3
4 3 4
5 4 4
6 5 5
便可以搜寻喜好某种运动有哪些人了
ex.谁喜欢做变态运动
select c.pid_name,b.sid_name
from
{个人运动喜好纪录} as a
join {运动类型} as b on a.sid=b.sid
join {人员资料表} as c on a.pid=c.pid
where
b.sid=5
搜寻结果 老头,变态
: 用我上面说的办法就很难找到
: 想请问版大对於这样的状况
: 有没有比较好的schema
: 谢谢。
--
欢迎参观我的相簿
http://www.pixnet.net/tedcat
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.210.41.244
※ 编辑: tedcat 来自: 218.210.41.244 (05/22 21:10)
1F:推 taitin:喔喔~谢谢 06/02 13:03