2013-02-19 55 views
0

我有一张表SCHOOL_PARENT和一张表SCHOOL_CHILD。 SCHOOL_CHILD表包含孩子的身份证号和父母身份证,身份证是主要身份证。这是因为一个孩子可以有两个父母(妈妈和父亲,因此2行)。至少有一种情况需要空主键。如何看待这种特殊情况?

存在那么一个没有任何父母的孩子的情况。但是我无法插入这一行,因为表SCHOOL_CHILD不接受一个空父母,它是主键的一部分。如何解决这个问题呢?

+0

如果你已经在SCHOOL_CHILD上有了孩子的ID。为什么你没有2个简单的外键给SCHOOL_PARENT可以为null? – 2013-02-19 11:38:26

+0

因为我会在child_id中有一个副本。 child_id 1 for mom and child_id 1 for dad – user1883212 2013-02-19 12:29:03

+0

制作两张表:SCHOOL_CHILD_PARENT和SCHOOL_CHILD。对当前表格中的孩子进行建模是没有意义的,因为孩子的任何属性都必须重复 - 每个父母一次。没有钥匙需要包含空值。 – sqlvogel 2013-02-19 21:38:36

回答

1

不知道如果我正确地理解这个问题,但我认为你的数据模型是这样的:

Table: Parent 
------------ 
ParentID (PK) 
Name 
.... 

Table: Child 
------------ 
ChildID (PK) 
Name 
.... 

Table: Parent_Child 
---------------- 
ParentID (PK) 
ChildID (PK) 

有孩子与父母之间的许多一对多的关系;您通常在“桥接”表格中对此进行建模。

0
Table: SCHOOL_PARENT 
------------ 
ParentID (PK) 
Name 
.... 

Table: SCHOOL_CHILD 
------------ 
ChildID (PK) 
MotherID (FK) 
FatherID (FK) 
Name 
.... 

FatherID ant MotherID可以为null。