php-扩展数据库中的类

我正在一个php项目中,该项目需要存储有关各种建筑物的信息,并将根据建筑物的类型存储不同类型的信息:

Class Building {
    var $location
    var $name
}

Building类将由House和Office等类扩展,因此这些类看起来像这样(仅作为示例)

Class House Extends Building {
    var $numRooms;
    var $numBathrooms;
}

Class Office extends Building {
    var $offices;
    var $sqfoot;
}

问题是,该如何在数据库中表示(如果重要,请使用MySQL).我应该使用构建表来存储位置和名称,然后为其他每个类创建一个表以容纳“扩展”变量吗?还是为每个班级创建一个表格?还是构建表应该包含其他类中所有变量的列?

最佳答案
我强烈建议您看一下Martin Fowler定义的Class Table Inheritance模式.

此设计模式将创建一个表,该表包含例如所有建筑物的公用数据,然后针对与特定建筑物类型相关的任何数据需要一个单独的表.我发现有帮助的一件事是在父表中存储一个“类型”字段,这样您就不必在子表中搜索相应的记录即可知道所拥有的实体类型.

我建议除非您有非常明确的明确定义的理由使用实体属性设计,否则应避免使用它.一方面,使用这种类型的设计来利用数据库的约束来控制需要哪些输入以及允许哪些类型的值变得不可能.另一方面,它将大大降低所有需要从这些类型的字段中拉出数据的查询的速度,因为无法像通常那样对存储在这些字段中的数据进行索引.

相关文章

在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信...
> [合辑地址:MySQL全面瓦解](https://www.cnblogs.c...
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时...
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括...
navicat查看某个表的所有字段的详细信息 navicat设计表只能一...
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起...