一个关于表结构的问题。
这里用一个小场景来引题: 想象一下,您想要将一个类 (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/