Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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
C# 我应该如何在数据库中存储这些数据?_C#_Json_Sql Server_Database - Fatal编程技术网

C# 我应该如何在数据库中存储这些数据?

C# 我应该如何在数据库中存储这些数据?,c#,json,sql-server,database,C#,Json,Sql Server,Database,我从Github上的CSV文件中读取数据,并将其保存到我的数据库中。然而,我在使用这些数据时遇到了很多问题。我认为我的数据库模型不适合这个。我应该如何在数据库中以这种方式存储数据 我使用的数据库是SQL Server 我当前的数据库模型 我在每天的数据之间使用逗号。我认为这不是一个健康的方法 我怎样才能让这更好? 我在前面使用的json数据 我对您的基础架构没有深入的了解,但我觉得这是一个数据突变问题。我想说,当您使用关系数据库时,首先要做的是对其进行规范化。在此之后,如果您需要每天多次甚至

我从Github上的CSV文件中读取数据,并将其保存到我的数据库中。然而,我在使用这些数据时遇到了很多问题。我认为我的数据库模型不适合这个。我应该如何在数据库中以这种方式存储数据

我使用的数据库是SQL Server

我当前的数据库模型

我在每天的数据之间使用逗号。我认为这不是一个健康的方法

我怎样才能让这更好?

我在前面使用的json数据


我对您的基础架构没有深入的了解,但我觉得这是一个数据突变问题。我想说,当您使用关系数据库时,首先要做的是对其进行规范化。在此之后,如果您需要每天多次甚至实时地获取信息,我想说,一个好的解决方案是实现MessageBroker服务(如rabbitmq),这样您就可以确保您的系统将接收所有数据,并且能够处理这些数据,而不会使您的服务的可用性面临风险。现在,为了存储它,如果需要保存历史记录,我想说一个好的解决方案是创建类似于日志表的东西,利用规范化数据库(如我在开始时所说),您将能够创建一个表来存储历史记录,如果您不需要此历史记录,我认为同样的想法也适用,但是,您只需更新现有记录,而不是创建新记录。如果两者都需要,我建议在数据库上创建两个表,一个用于存储历史数据,另一个用于存储合并数据。

通常,数据库处理简单的操作,例如访问、添加或删除表中的行,比处理字段中的数据更快

为此,如果您有定期更改的数据,如daily confirmedData和deathsData字段,则应每天将这些字段添加为新行

您可以将静态数据(您的国家/地区数据)放在一个单独的表中,以避免重复到您的confirmedData和confirmedDeaths数据,然后只需要一个索引链接返回到您的国家/地区表


通过将动态数据放在单独的表中,您可以添加一个日期字段。这将使搜索或整理给定日期或日期周期的数据更容易实现。

您可以如图所示对数据库进行建模(您可以根据具体需要进行更改)。

然后将您的国家和地区添加到DB中,这应该是一项一次性任务。尽管如果新国家/地区发布了您当前没有的数据,您可能需要添加新数据。
对于每一个新的一天,您都会在相应区域的ConfirmedCases表中添加一行。

您将遇到一些问题,无法按照现在的方式对数据进行索引。首先,您似乎没有存储所采取措施的实际日期。您可能还希望最终扩展您的度量,例如,添加
恢复的
假阳性的

我建议采用以下模式:

为每个日期的案例数据创建一个单独的表。这是否意味着工作量太大?当我们想到每天都有新的数据出现时,每天添加一个新表有意义吗@jason.kaiserSmith在RDBMS中存储逗号分隔的信息总是一个坏主意。您想对数据进行标准化。@MuhammetCaylak No,1个数据表,然后每天添加一行。你选择了这样一种方式来避免速度方面的问题“不,我选择在未来避免问题;选择存储分隔数据只会导致后续问题。首先,正确地存储它(加载数据时只需多花几分钟)可以节省您数小时的时间。谢谢您的兴趣谢谢您的兴趣谢谢您的兴趣谢谢您的兴趣
[
  {
    "id": 1,
    "province": "",
    "country": "Afghanistan",
    "countryCode": "AF",
    "countryTrName": "Afghanistan",
    "latitude": 33,
    "longitude": 65,
    "confirmedData": [
      {
        "dateTime": "2020-01-22T00:00:00",
        "data": 0
      },
    "deathsData": [ bla ,bla .. ]