数据表设计问题:类似需求,以下只是打个比方,求数据库表设计,并达到相应的约束。1:有一个男人(male)
2: 男人可以有最多一个人做妻子(Wife)。
3: 男人可以有零个或多个人做小孩(Child)。
4: 女人和小孩都属于人(Man),当然男人不在此内(呵呵,只是对需求的比方)
5:一个人选择做妻子就不能做孩子,同样做孩子就不能做妻子.现在我设计了数据库表如下。
男人表:
----------------------------------
MALE_TABLEMALE_ID(主键)
*
*
*
---------------------------MAN_TABLE(人表,包含了可做妻子和孩子的人)  注:实现人的唯一性MAN_ID(主键)
*
*
*
------------------------------WIFE_TABLE(妻子表)  注:实现妻子的一一对应关系约束MALE_ID (不可重复)  
MAN_ID  (不可重复)------------------------------CHILD_TABLE(孩子表) 注:可实现对孩子的一对多关系约束MALE_ID
MAN_ID  (不可重复)
------------------------------如果表是这样的话,
最多有一个妻子可以实现。
可有多个孩子可以实现。但是,妻子与孩子的互斥性没有实现,即同一个人(相同的MAN_ID)不可以即出现在WIF_TABLE中又出现在CHILD_TABLE中.以上表需如何整合才能完成想要的功能。
请高手赐教,谢谢!

解决方案 »

  1.   

    WIFE_TABLE(妻子表)  注:实现妻子的一一对应关系约束 MALE_ID (不可重复)  
    MAN_ID  (不可重复) ------------------------------ CHILD_TABLE(孩子表) 注:可实现对孩子的一对多关系约束 MALE_ID 
    MAN_ID  (不可重复) 
    ------------------------------ 这两个应该合成一个表,同时加一个标志字段:Type (1--妻子,2--孩子)
      

  2.   

    WIFE_TABLE(妻子表)  注:实现妻子的一一对应关系约束 MALE_ID (不可重复)  
    MAN_ID  (不可重复) ------------------------------ CHILD_TABLE(孩子表) 注:可实现对孩子的一对多关系约束 MALE_ID 
    MAN_ID  (不可重复) 
    ------------------------------ 这两个应该合成一个表,同时加一个标志字段:Type (1--妻子,2--孩子)**************************************************************************但这样,就无法实现与“妻了”的一对一关系!
      

  3.   

    在人表上加一字段Choice,默认值为0.在妻子表上建触发器:
    当往妻子表里插记录时,先判断choice能不能插。
    为0才能插。插完了就把Choice更新为1.孩子表同理。