我有一個Django模型與一個人的模型:Django的數據庫設計 - 空Forign鍵
class Person(models.Model):
# Personal details
first_name = models.CharField(max_length=50)
middle_name = models.CharField(max_length=50, blank=True, null=True)
last_name = models.CharField(max_length=50)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
date_of_birth = models.DateField()
# Address
street_address = models.CharField(max_length=50)
suburb = models.CharField(max_length=30)
postcode = models.CharField(max_length=4)
state = models.CharField(max_length=3, choices=STATE_CHOICES)
#Contact Details
email = models.EmailField()
# Family
spouse = models.ForeignKey('self', null=True, blank=True)
children = models.ManyToManyField('self', null=True, blank=True)
home_church = models.ForeignKey('Church', null=True, blank=True)
的「middle_name」字段是空的,我不認爲有什麼辦法避免這種情況,是嗎?
不過,我也有配偶可爲空ForeignKey的,爲自己的孩子遞歸ManyToManyField,以及教會的ForeignKey可爲空(如果相關)。
我的問題 - 首先,目前對可空的外鍵的共識是什麼?我應該在這裏允許嗎?還是我應該創造某種「無人」或「未分配」模式來表示沒有配偶/家庭教會?
或者是有,我可以在Django返工這樣的設計,以適應這一些其他的方式?
如果我不跟空FK繼續前進,是否有在Django我需要知道什麼注意事項? (左加入?)
乾杯, 維克多
只有我自己的2美分,但我覺得空的外鍵是完全正常的,幾乎不可缺少的大部分時間。沒有Django的注意事項,我能想到的和ORM將處理他們的罰款。 – Mikesname 2011-01-28 15:57:13