Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/150.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
Mysql Sql DB驱动的Web应用程序体系结构问题_Mysql_Database Design_Web Applications_Architecture_Nosql - Fatal编程技术网

Mysql Sql DB驱动的Web应用程序体系结构问题

Mysql Sql DB驱动的Web应用程序体系结构问题,mysql,database-design,web-applications,architecture,nosql,Mysql,Database Design,Web Applications,Architecture,Nosql,我正在构建中型商业web应用程序,数据保存在MySQL数据库中 我正试图想出一种方法,将某些可选择的“小部件”添加到该应用程序中(例如,货币小部件-当web应用程序可见时,它将显示用户指定的货币),但由于小部件没有公共基础,因此很难决定如何保存每个用户的小部件数据和设置 例如,货币小部件的设置与天气小部件完全不同。 一个需要所需货币的列表,一个需要天气的目标位置 我想通过将小部件的所有设置数据编码在db表的“widgetData”列中来解决上述问题,该列将包含userId、widgetId和wi

我正在构建中型商业web应用程序,数据保存在MySQL数据库中

我正试图想出一种方法,将某些可选择的“小部件”添加到该应用程序中(例如,货币小部件-当web应用程序可见时,它将显示用户指定的货币),但由于小部件没有公共基础,因此很难决定如何保存每个用户的小部件数据和设置

例如,货币小部件的设置与天气小部件完全不同。 一个需要所需货币的列表,一个需要天气的目标位置

我想通过将小部件的所有设置数据编码在db表的“widgetData”列中来解决上述问题,该列将包含userId、widgetId和widgetData。 我选择JSON作为我的编码方式,每次用户试图加载它的页面时,我必须解码它的设置,并根据设置将所需的数据交给用户

保存小部件的实际数据时也是如此,因为它本身没有公共基础

希望下次我可以通过使用非SQL数据结构来解决这个问题,但目前的项目不是这样。

在这种情况下,这将对您非常有用


它比JSON、XML或其他类型的格式灵活得多,因为它在标准SQL数据存储中工作,尽管方式不同

我投票支持EAV解决方案,因为这是使用它的正当理由之一,但不要爱上它。EAV的一个优点是它是数据库本机的,您可以用SQL编写查询来查询它(找到缺少某些设置的所有小部件,然后添加),而大多数引擎不支持JSON


另一方面,如果您希望/需要在包含结构化数据的列中进行查询,那么XML是比JSON更好的选择(现在):

如果您的小部件是通过浏览器中的Javascript呈现的,那么您的解决方案是非常好的。您的
widgetData
仍然是一个JSON字符串,在Javascript中,您可以使用
JSON.parse()
将其转换为一个对象并进行渲染,以及
JSON.stringify()
将其转换回字符串,然后再将其发送回服务器。

您的问题到底是什么?