日期:2014-05-17  浏览次数:20483 次

如何体现一张表成员之间的关系?需要再建一张表嘛?
例如,一个旅行团,里面有一个公司的人,一个公司里面的人又有带一大家人的,有夫妻旅行的,有一个学校的,需要怎么设计这些成员之间的关系啊?

谢谢

------解决方案--------------------
可以建立a表,维护 几个基本类型(公司,家庭,学校等)
id typeid type
1    001     公司
2    002    家庭
3    003     学校

再建立b表,维护所有旅行人员
id person typeid type
1   11     001   公司
2   22     001   公司
3   33     002   家庭
4   44     003   学校  
5   55     001   公司
------解决方案--------------------
--旅行团
团id   团类别   团名称 

--团人员
团id 组织id  人id


--人员 
人id 姓名 成员id  组织id

--组织
组织id  组织名称

组织可以有学校也可以是公司

大概这样,参考

------解决方案--------------------
一般来说,这么设计是没问题的。

但是,要看具体业务。

对于旅行团来说, 你的客人基本是一次性的, 不需要单独做为实体长期存在。

一般来说,一张表够了, 公司、学校的代表人(或联络人)为记录主信息,其它人做为这个主信息的附属信息(用专业的话来说,就是外挂 。 对于外挂来说,不需要记录过多信息)。

附属信息用复杂格式,如json,  xml存贮即可。


id,  name, phone, teamid, st_time,...,etc., attach(json, xml)
------解决方案--------------------
一张表的话,这样建立看行不!字段:编号,姓名,关系。
其中关系这列的值可以这样建立三个数字表示:1.本单位的用1开头,非本单位的用0开头;2.第二位数字是用来给本单位人员编个序号(从1到n,简单的说就是以本单位人员作为小组长给编个号哈!),其他人员是跟哪个来的就用哪个人的序号(比如序号为2的张三带的是女朋友来,则用12表示她女友前两位编号)