php - 表结构,每行一个字段 VS 所有数据合一

标签 php sqlite oop database-design orm

一个关于表结构的问题。

这里用一个小场景来引题: 想象一下,您想要将一个类 (let A) 的对象存储在一个表中。

您有两种可能的表结构:

Structure A: "one field per row":
id (int),
name (text),
credit (int),
birthday (date).

Structure B: "all data in one row":
id (int),
data (bigtext).

考虑以下几点:

  • 您永远不会执行过滤/排序字段名称/信用/生日的请求
  • 在编辑字段之前,您想要加载对象
  • 字段 name/credit/birthday 没有选项/修饰符(keys/unique/...)

这两种表结构有什么区别?

.

具体来说,我正在开发一个 PHP/SQLITE 应用程序,该应用程序有时需要将对象存储在数据库中。我希望能够轻松添加 db-stored-class 而不必每次都编辑我的数据库方案。使用“结构 B”可以让我这样做。 它可能看起来很脏,是的,您可能被教导说您需要有漂亮的类型行.. 但为什么不呢?

“结构 A”的主要优势不只是选择过滤器和更新的有效性吗?

最佳答案

永远不要在关系数据库中使用一个字段中的所有数据来做示例二。这是 WAYY 更多的努力,而且灵 active 更差。

如果一年后您想创建另一个访问数据库的项目,您将不得不重复大量的验证、提取等工作,而如果所有内容都在单独的列中,那就容易多了。

你说“你永远不会执行过滤/排序字段名称/信用/生日的请求” 我非常怀疑它会那样工作。你在软件开发中很快学到的一件事是像“哦,那永远不会发生”这样的陈述总是会反咬你一口

如果你真的想采用 b) 的方法,至少要研究一下 nosql。我对此了解不多,但如果这是您想要采用的路线,它将比 RDBM 更适合您的项目

关于php - 表结构,每行一个字段 VS 所有数据合一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12332240/

相关文章:

sqlite - 在 DELETE 后计算已删除的记录

Java-将数据写入并保存到txt文件

java - SQLite如何为未知列数量构建数据库模式(多个表?)

oop - liskov 替换原则违反

java - Java 中的抽象?

javascript - 查找所有表单值并提交

PHP:如果条件则重定向1否则重定向2

php - jQuery Ajax : assign response to two variables using a single request

php - 在 php 中对 mysql 查询的结果进行排序

android - SQLite 异常 : no such table Error