我在PHP中用PHP编写了两个数据对象,它们非常相似,但应保存在两个单独的表中。因此,我将它们编码为超类的子类。
超类将保存两个类的大部分重复函数,以便从数据库表中访问数据。虽然每个类的特定函数/错误检查/ DB访问函数将在子类中实现。
我如何在数据库中实现这一点?我正在考虑超类的表的需求。
设计一: TableA和TableB将引用TableSuperClass,并且所有常见结构化数据将链接到TableSuperClass而不是子类(TableA和TableB)本身。给TableA,TableB,TableSuperClass和CommonData。使用TableA和TableB存储特定于A / B类的东西。
设计二: TableA和TableB将具有大致相同的结构,每个都有一些额外的列以满足其特定需求。超类没有桌子。 A和B共有的数据将存储在两个单独的表中。所以基本上是TableA,TableB,TableAData,TableBData
这两种设计的优点和缺点是什么?
由于
答案 0 :(得分:0)
您正在引用一种称为数据库多态的技术,有时是类表继承,否则沿着这些行。通常它是使用您的第一个设计实现的,但有3个表:一个包含公共列的公用表,以及一个包含每个“子类”的表,它有自己独特的列。这些通常与公共表上的类型列连接在一起,其中每个子类将在代码中定义它自己的类型值,并且仅使用该值来对公共表及其表进行连接。