作者derekhsu (断头不过碗大疤)
看板PHP
标题Re: [请益] 有点复杂的问题(内详)
时间Wed Jul 18 11:35:54 2007
※ 引述《dinos (守护神)》之铭言:
: ※ 引述《pakker (找寻蔚蓝天空)》之铭言:
: : 1. 一个栏位解决 (可以做到32~64个属性)
: : CLASSMATE 0x00000001
: : HATE 0x00000002
: : FRIEND 0x00000004
: : FAMILY 0x00000008
: : SET:
: : UPDATE XXX SET relation=CLASSMATE&HATE WHERE NAME='xxx';
: : QUERY:
: : SELECT NAME FROM XXX WHERE relation & CLASSMATE > 0;
: : SELECT NAME FROM XXX WHERE relation & (CLASSMATE|FAMILY) > 0
: : SELECT NAME FROM XXX WHERE relation & (CLASSMATE|FAMILY) = (CLASSMATE|FAMILY)
: : 2. 建立 纪录 relation 的 table
: : ex:
: : 王小明 friend
: : 王小明 classmate
: : 陈小华 classmate
: : 陈小华 hate
: 顺道问一下,若是 relation 超过 64 种,那 relation 要怎麽处理比较好呢?
: 用 char binary 吗?
有一个比较快的方法,直接作第三阶正规化把Ralational Table建出来:
这需要三个Table,例:
1.PEOPLE 纪录人员
[ID], NAME, .....
2.RELATION 记录关系的种类
[ID], RELATION
3.RELATION_PEOPLE 纪录人与人间关系的关联资料表
[PEOPLE_ID_SOURCE].[PEOPLE_ID_TARGET],[RELATION_ID]
建出来的表比较复杂,但其实是比较符合正规化原则,也比较好进行操作的
--
界(
http://derekhsu.idv.st)
我的世界、世界的界线;我与这个世界的界线
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.254.164
1F:推 knockout:推一个 ~~此法比较符合正规化.. 虽然这不是资料库版 ... 07/18 12:19
2F:推 gckenny:推... 07/18 13:39