数据库表设计没有固定结构的数据

时间:2018-03-07 06:10:50

标签: sql database database-design nosql

我的数据结构如下:

<event name="SomeEventName" time="2018-03-06 09:30:00" owner="SomeOwnerId">
    <param name="param1" value="value1"/>
    <param name="param2" value="value2"/>
    ...
    <param name="paramN" value="valueN"/>
</event>

此结构从客户端发送到服务器,并描述客户端上发生的事件。我需要将每个收到的用户事件存储在数据库中。 问题在于设计数据库表结构:从客户端接收的每个事件都可以有不同数量的参数,当然每个参数的值也不同。 即使是同一事件也可能有不同数量的参数。

所以,我的问题是关于这种数据结构的数据库设计,它在服务器端没有预定义的数据结构。 如何为这样的结构设计数据库表? 我可以改变从客户端到JSON的数据接收格式,但我不能改变格式本身 - 它是一个&#34;事件&#34;参数数量未知。

也许我应该看看可以用JSON格式存储整个文档的NoSQL数据库?

任何帮助表示感谢,提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果你使用NoSQL,你可以在对象中构建对象。名称,时间和所有者都是键和数据,这是一个具有对象值的键,该对象具有params的所有键/值对。

AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setCancelable(false);
dialog.setTitle("Confirm");
dialog.setMessage("Are you sure you want to cancel this order ?" );

dialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int id) {
        //Action for "Yes".
        deleteOrder();
    }
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
     @Override
     public void onClick(DialogInterface dialog, int which) {
        //Action for "No".
        createCustomer();
     }
 });

final AlertDialog alert = dialog.create();
alert.show();