Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
SQL对象存储--最佳实践_Sql_Database Design - Fatal编程技术网

SQL对象存储--最佳实践

SQL对象存储--最佳实践,sql,database-design,Sql,Database Design,我正在寻找一种在MySQL风格的数据库中存储JavaScript对象的方法 我希望有数据库设置来处理对象、它们的属性,甚至对象引用 给我以下语法: <object> := list of atributes <attribute> := integer | string | boolean | object-reference | list of attributes :=

我正在寻找一种在MySQL风格的数据库中存储JavaScript对象的方法

我希望有数据库设置来处理对象、它们的属性,甚至对象引用

给我以下语法:

<object> := list of atributes

<attribute> := integer
            | string
            | boolean
            | object-reference
            | list of attributes
:=心房肌列表
:=整数
|串
|布尔值
|对象引用
|属性列表
有没有一个标准的方法,或者说是最好的实践


我想使用数据库布局来启用基于atribute值的过滤。

据我所知,mysql是一个关系数据库。它不支持以您需要的方式存储对象。您只需序列化对象并存储它。像访问属性这样的操作是不可能的。然而,除了mysql之外,我还记得谷歌上其他处理对象的db引擎。

您发现难以存储对象的原因是

面向对象的范例基于成熟的软件工程 原则。然而,关系范式是基于经过验证的 数学原理。因为两者的基本范式是不同的 技术不能无缝地协同工作

阻抗失配变得明显 当您查看访问的首选方法时:使用对象 通过对象之间的关系遍历对象,而 关系范式连接表的数据行

如果您一直使用关系数据库,那么您必须在对象模型和关系模型之间执行映射。如果您决定以您描述的方式存储对象,那么您可能必须更改为


我已经读过关于这个话题的文章,但我相信还有很多其他的。网上也有很多信息。

@foampile:我的意思是一个ecma脚本属性包,也就是JavaScript对象,但假设我想存储json数据,并且我想能够搜索各个属性?没有模式,什么都没有。。。只是一些json数据。一些条目可能具有
属性,如果有,我希望使用该属性的once具有确定值。对象数据库支持JS对象吗?@MartinKristiansen-我做了更多的搜索,发现还有一些可以用来存储JSON数据的对象,您可能也想看看。如果必须使用关系数据库,那么数据层必须分解JSON数据并将其放在表列中进行搜索。让我重新表述一下问题,如何制作支持存储对象的数据库布局。@MartinKristiansen。我认为您需要找到一个支持直接将JSON存储为对象的引擎。链接中公认的答案提到CouchDB。无论您使用关系引擎设计什么,您都将面临在保存时将对象转换为数据行,在检索时将数据行转换为对象的问题。