我正在快速学习数据库设计的来龙去脉(截至一周前,这对我来说还是新事物),但我遇到了一些似乎不是很明显的问题,所以我希望得到一些澄清.
我正确的问题是关于外键的。作为我设计的一部分,我有一张公司表。最初,我将地址信息直接包含在表中,但是,由于我希望实现 3NF,我将地址信息分解为自己的表Address。为了保持数据完整性,我在Company中创建了一个名为“addressId”的行作为 INT,并且Address表有一个相应的 addressId 作为其主键。
我有点困惑(或者我想确保我做的正确)是确定哪个表应该是主(引用)表,哪个应该是子(引用)表。当我最初设置它时,我将地址表设为主表,将公司设为子表。但是,我现在认为这是错误的,因为每个公司应该只有一个地址,如果删除公司行,我希望也删除相应的地址(CASCADE 删除)。
我可能完全错误地处理了这个问题,所以我会很感激任何关于在使用外键时如何最好地考虑表之间关系的好的经验法则。谢谢!