扩展数据库中的类

2023-12-27

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

Class Building {
    var $location
    var $name
}

建筑类将通过房屋和办公室等类进行扩展,因此类将如下所示(仅作为示例)

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

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

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


我强烈建议您查看类表继承 http://www.martinfowler.com/eaaCatalog/classTableInheritance.htmlMartin Fowler 定义的模式。

例如,此设计模式创建一个表来保存所有建筑物通用的数据,然后需要一个单独的表来存储与特定类型建筑物相关的任何数据。我发现有用的一件事是在父表中存储“类型”字段,以便您知道自己拥有什么类型的实体,而无需在子表中搜索相应的记录。

我建议除非您有非常具体、明确的理由来使用实体属性设计,否则请避免使用它。一方面,当使用这种类型的设计时,不可能利用数据库的约束来控制需要哪些输入以及允许哪些类型的值。另一方面,它将大大减慢任何需要从这些类型的字段中提取数据的查询,因为存储在这些字段中的数据无法像通常那样进行索引。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扩展数据库中的类 的相关文章

  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • 使用 php 在多维数组中按键排序[重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 中对多维数组进行排序 https stackoverflow com questions 2059255 sorting multidimensional array in php 如何在
  • MySQL Connector/C++ 库链接错误问题

    PROBLEM 好吧 我一直在尝试遵循 MySQL Forge Wiki 和其他一些网站上的示例代码 这些网站提供了有关如何获得简单数据库连接的教程 但由于某种原因 我的项目总是因链接错误而失败 我可以我自己不明白为什么或如何解决它 我仍在
  • 如何在类似 MVC 的页面中加载基于漂亮 URL 的类?

    我想请教一些关于如何解决这个问题的提示 我正在尝试构建自己的 MVC 网站 我了解了 URL 的基础知识 http example com blog cosplay cosplayer expo today 博客 gt 控制器cosplay
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • 如何在 PHP 中使用 cURL 发出同时包含 GET 和 POST 参数的请求?

    其他人已经问过如何从 perl java bash 等执行此操作 但我需要在 PHP 中执行此操作 并且我没有看到任何已提出的专门与 PHP 相关的问题 或包含 PHP 的答案 My code ch curl init url curl s
  • 如何解码 eval( gzinflate( base64_decode(

    我已将此代码注入到我的网站中 如何解码尾随字符串 我需要知道发生了什么以及其背后的代码是什么 这应该输出将被执行的代码eval 我希望这就是您正在寻找的
  • PHP Solr PECL 扩展安装

    我已经使用命令安装了 pecl solr pecl install solr 和梨使用 wget http pear php net go pear phar php go pear phar 重启Apache后 我仍然收到错误 Fatal
  • Laravel 5 中的自定义验证器

    我正在将 Laravel 应用程序从 4 升级到 5 但是 我有一个自定义验证器 但无法运行 在L4中 我做了一个验证器 php文件并将其包含在全局 php using require app path validators php 我尝试
  • 强制 Composer 下载 git repo 而不是 zip

    我对作曲家有一些问题 require php gt 5 3 2 kriswallsmith buzz 0 7 Repo https github com kriswallsmith Buzz tree v0 7 https github c
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 当所有维度值都具有 100% 重要性时处理多对多维度

    我至少会尽力保持简洁 假设我们正在跟踪一段时间内的账户余额 所以我们的事实表将包含诸如 账户余额情况表 FK 账户ID FK 日期ID Balance 显然你有一个账户维度表 and a 日期维度表 所以现在我们可以轻松地过滤帐户或日期 或
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • 为什么我的会话仍然存在?

    我一定很愚蠢 因为似乎一件相当明显的事情现在让我完全困惑 我有一个会议 ie SESSION handbag id 在某个时刻 我需要彻底终止这个会话 ie at the start of the page session start el
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c

随机推荐

  • 服务的任何公共方法的 AOP 切入点表达式

    什么是最简单的切入点表达式 它将拦截所有带有注释的bean的所有公共方法 Service 例如 我希望它会影响该 bean 的两个公共方法 Service public MyServiceImpl implements MyService
  • SVN对单个文件的权限

    SVN 是否可以为单个文件设置写权限 而存储库的其余部分都是只读的 另一种可能性是预提交挂钩脚本 http svnbook red bean com en 1 5 svn ref reposhooks pre commit html
  • 计算特定范围sql server的记录数

    我正在尝试编写一个查询来根据多个不同范围来计算记录数 我成功使用了union 但我觉得有更好的方法来做到这一点 这是我所做的 select count col1 as range1 from tbl1 where col1 lt 15000
  • 将 IOS 应用程序从一个帐户的 Testflight 转移到另一个帐户

    App is 未发表在 App Store 上 但通过以下方式分发给测试人员试飞在以前的帐户上 现在我必须将应用程序转移到新帐户 具有相同的捆绑包标识符 我可以将其放置在具有相同捆绑包标识符的新帐户中吗 转移应用程序的程序是什么 因为它在
  • 如何格式化 MongoEngine PointField 的数据

    所以我想用mongodb中的位置数据做一些实验 所以我写了一些python代码来生成一些测试数据 不幸的是 文档位于http docs mongoengine org apireference html mongoengine fields
  • 获取应用程序共享意图的包名称

    我想获取创建共享意图的应用程序名称或其包名称 我正在制作通过意图接收共享数据的应用程序 如何获取创建者应用程序的包名称 类似于 intent getSourceBackageName EDIT 我不确定我的问题是否清楚 但我需要找出调用我的
  • Git clean 排除嵌套子目录

    我在使用 git clean 和排除嵌套目录选项时遇到问题 我想从存储库中清除所有未提交的文件 不包括vendor bundle为了 我的测试报告如下 debugg dir git file txt not commited file no
  • Javascript整数从零开始[重复]

    这个问题在这里已经有答案了 我有一个关于 javascript 如何解析以零开头的整数 例如银行帐号 的问题 下面是来自 Chrome 开发工具的简单示例 var zeroTest 022 undefined zeroTest 18 为什么
  • R.java 无法为 Android 库应用程序正确生成

    我创建了一个简单的 Android 库应用程序 其中只有 1 个包含 TextView 的活动 它工作正常 但是当我将其标记为库并在另一个应用程序中引用时 当我尝试使用 findViewById R id welcome textview
  • 使用 env('APP_ENV')、config('app.env') 或 App::environment() 获取应用程序环境有什么区别?

    使用上有什么区别env APP ENV config app env or App environment 获取应用程序环境 我知道env APP ENV 愿意 ENV config app env 读取配置并App environment
  • 在 Spring Boot 中为 Undertow 启用 HTTP 2.0

    我想知道如何使用 Spring Boot 为 Undertow 启用 HTTP 2 0 我监控了该协议 目前 HTTPS 使用的是 1 1 有什么财产可以用吗 或者我应该使用此选项创建一个 EmbeddedServletContainerF
  • Python isnumeric 函数仅适用于 unicode

    我正在尝试使用以下命令检查字符串是否为数字isnumeric功能正常 但结果并不如预期 该函数仅在它是 unicode 字符串时才起作用 gt gt gt a u 1 gt gt gt a isnumeric True gt gt gt a
  • ajax 自动完成扩展器不起作用

    我在文本框中有一个自动完成扩展器 它将记录显示为数据库中的列表 但是当我单击文本框并开始输入任何内容时 却没有发生任何事情 我的html代码是
  • Java for循环优化

    我用 java for 循环做了一些运行时测试 并发现了一个奇怪的行为 对于我的代码 我需要原始类型 如 int double 等 的包装对象来模拟 io 和输出参数 但这不是重点 只要看我的代码即可 具有字段访问的对象如何比原始类型更快
  • 如何将表单输入绑定到字典值

    我正在创建一个 ASP NET core razor 页面 Web 应用程序 其中一个页面需要能够修改Dictionary
  • 导入我的自定义类并调用它的方法?

    我为我的 Android 项目创建了一个名为 Sounds 的自定义类 我希望能够从我的活动中调用它 我的课内容如下 package com mypackage import java util HashMap import android
  • 在 Windows 7 中,当 DropDownStyle = DropDownList 时,ComboBox.SelectedValue 与显示的文本不匹配

    假设 Windows 应用程序中有以下代码 ComboBox comboBox new ComboBox AutoCompleteMode AutoCompleteMode SuggestAppend AutoCompleteSource
  • 属性路由继承

    我之前一直在我的 MVC 应用程序中使用这种方法 Route admin public class AdminController Controller Route products public class ProductsAdminCo
  • 带有会话 Cookie 的 Spring Security RememberMe 服务

    我正在使用 Spring Security 的 RememberMe 服务来保持用户身份验证 我想找到一种简单的方法将 RememberMe cookie 设置为会话 cookie 而不是设置固定的过期时间 对于我的应用程序 cookie
  • 扩展数据库中的类

    我正在开发一个php项目 该项目需要存储有关各种建筑物的信息 并将根据建筑物的类型存储不同类型的信息 Class Building var location var name 建筑类将通过房屋和办公室等类进行扩展 因此类将如下所示 仅作为示