1

我正在 Apache 服务器上使用 PHP 构建 Web 应用程序。

该应用程序包含许多有关人员的可选数据。根据人员的类别(一个人可以属于多个类别),他们可以选择是否指定数据:家庭地址(街道、城市、国家/地区等 5 个字段)、工作地址(又是 5 个字段)、年龄、电话号码……当然,该应用程序也存储了一些额外的数据(创建、上次更新、用户名、密码、用户级别……)。

该应用程序的当前/过时版本在“用户”表中有 86 个字段,并且(取决于人员的类别)扩展了一个包含另外 23 个字段(1-1 关系)的附加表。

所有这些都存储在 Postgresql 数据库中。

我想知道这是否是处理此类数据的最佳方式。大多数记录有(很多)空字段,使数据库更大并且查询更慢。是否值得研究像三重商店这样的其他解决方案,还是我太担心它了,我应该只保留当前的设置吗?为网站的每个新目的只添加字段到表中似乎很奇怪并且感觉很尴尬。另一方面,我的印象是三合店还没有那么普遍。任何指示或建议如何解决这个问题?

我读过 Toby Segaran 和其他人的“Programming the semantic web”,但从那本书我得到的印象是三重存储和 RDF 的主要优势是通过网络交换信息(这不是我的应用程序的目标)

4

1 回答 1

0

大多数记录都有(很多)空字段

这意味着您的数据远未标准化。

该应用程序的当前/过时版本在“用户”表中有 86 个字段,并且(取决于人员的类别)扩展了一个包含另外 23 个字段(1-1 关系)的附加表。

确实,是的,距离规范化还有很长的路要走。

如果你有充分的理由离开你现在的位置,那么第一步就是更好地构建你的数据。即使您选择迁移到不同类型的 DBMS,例如 noSQL 或对象数据库。

这不仅可以节省 DBMS 中的空间,还可以更快地检索数据并减少您需要编写的代码量(例如,如果您有“地址”的单个表,带有一个标记地址类型的字段)。

网上有很多资源(除了上面的维基百科链接)描述如何应用规范化规则(它在 1,2 和 3 之后开始有点涉及 - 但如果你能掌握这些,那么你很好有能力承担大部分任务)。

于 2011-09-07T12:34:21.013 回答