Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 最佳数据存储-三重存储/关系数据库/其他?_Php_Database_Triplestore - Fatal编程技术网

Php 最佳数据存储-三重存储/关系数据库/其他?

Php 最佳数据存储-三重存储/关系数据库/其他?,php,database,triplestore,Php,Database,Triplestore,我正在Apache服务器上用PHP构建一个web应用程序 该应用程序包含大量关于人员的可选数据。根据人员的类别(一人可以在5个类别中),他们可以选择是否指定数据:家庭地址(=街道、城市、国家等的5个字段)、工作地址(同样是5个字段)、年龄、电话号码等。。。。当然,该应用程序还存储一些附加数据(已创建、上次更新、用户名、密码、用户级别等) 当前/过时版本的应用程序在“用户”表中有86个字段,并且(取决于人员的类别)扩展为一个附加表,其中包含另外23个字段(1-1关系) 所有这些都存储在Postgr

我正在Apache服务器上用PHP构建一个web应用程序

该应用程序包含大量关于人员的可选数据。根据人员的类别(一人可以在5个类别中),他们可以选择是否指定数据:家庭地址(=街道、城市、国家等的5个字段)、工作地址(同样是5个字段)、年龄、电话号码等。。。。当然,该应用程序还存储一些附加数据(已创建、上次更新、用户名、密码、用户级别等)

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

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

我想知道这是否是处理此类数据的最佳方式。大多数记录都有(很多)空字段,这使得数据库变大,查询速度变慢。是否值得研究其他解决方案,如三重存储,或者我是否太担心它,是否应该保持当前设置?为站点的每一个新用途向表中添加字段似乎很奇怪,而且感觉很尴尬。另一方面,我的印象是,三联店还没有那么普遍。有什么建议或建议来解决这个问题吗

我读过托比·塞加兰(Toby Segaran)和其他人的《语义网编程》(Programming the semantic web),但从那本书中我得到的印象是,三重存储和RDF的主要优势在于通过网络交换信息(这不是我应用程序的目标)

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

这意味着您的数据远未规范化

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

事实上,是的,这离实现还有很长的路要走

如果你有一个很好的理由离开你现在的位置,那么第一步就是更好地组织你的数据。即使您选择移动到不同类型的DBMS,例如noSQL或object db

这不仅节省了DBMS中的空间,还加快了数据检索速度,减少了需要编写的代码量(例如,如果“地址”有一个表,其中有一个字段标记地址类型,则可以重复使用维护家庭地址和维护工作地址的相同代码)


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

不知道你是否认为它没有规范化。我正在存储关于一个人的各种数据(眼睛颜色、头发颜色、工资、组织级别、有徽章、有公司卡、有……等等)。是的,您可以将所有可以“拥有”的项放在一个表中,并在链接用户和“属性”之间放置一个中间表,但我不确定这是否会加快查询速度(相反)。尽管我同意使用表“属性”来存储可选数据,它似乎正朝着三重存储的方向发展。。。(其中所有字段都存储为“属性”或他们所称的“对象”)