2013-02-19 21 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。