我正在尝试使用继承以实现可重用性,并且我有一个名为' Partner'和两个子类'律师'和'会计师'如下:
abstract class Partner{
}
class Lawyer extends Partner{
}
class Accountant extends Partner{
}
这对代码来说都很好,但是我想知道更多关于数据库的问题,我如何在db中存储这些信息,我是否应该为两个实体都有一个表伙伴,或者我应该有单独的表对于每个实体,基于这两个实体基于其属性彼此不同的事实。 如果我将它保存在分开的表格中,我还有另一张桌子' case'与合作伙伴有关: case:id_id,subject,description,partner_id ....我的问题是,如何基于用户登录进行内连接实体,如果他是laywer join lawyer table,反之亦然,如果我继续添加更多实体,该怎么办?未来?
我如何以这样的方式做到这一点,以后我将添加更多实体我的数据库查询不必一次又一次地更改。
答案 0 :(得分:0)
我不能说我赞成将律师和法律合并为一个合作伙伴的想法。我的建议是将您的数据库实体分开。因此,您将有三个表(律师,会计师和案例),案件将包含律师和会计师的外键。在这种情况下,你的内连接将很简单。你将有两个1:1的关系,而使用合作伙伴表,它必须是1:M的关系,以获得律师和会计师 - 每个都是在合作伙伴表中的自己的记录。另外,不要忘记你所拥有的所有无用的NULLS,因为律师和会计师都有自己的特定属性......哇!
答案 1 :(得分:0)
由于您将在相同的背景下使用律师和会计师,我认为使用相同的表是有意义的。
您只需创建一个包含公共属性的partners
表,并创建具有1:1关系的单独accountants
和lawyers
表。这基本上意味着这两个表不会获得自己的自动递增主键,而只是partner_id
是主要的,并引用合作伙伴表中的id
。