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

问题描述 投票:-1回答:4

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

我使用的数据库是SQL Server。

Csv file i use

我当前的数据库模型

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

我该如何改善?

enter image description here

我在前面使用的json数据

[
  {
    "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 .. ] 
c# json sql-server database corona
4个回答
2
投票

您可以如下图所示对数据库进行建模(可以更改它以适合您的确切需求)。DB Model

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


0
投票

我对您的基础架构没有深入的了解,但是我认为这是一个数据突变问题。我想说的是,当您使用关系数据库时,要做的第一件事就是对其进行规范化。之后,如果您需要一天甚至多次获取信息,或者说是实时的信息,一个不错的解决方案是实施消息代理服务(例如rabbitmq),以确保系统将接收所有数据。并能够处理它,而不会给您的服务带来风险。现在,要存储它,如果您需要保留历史记录,我想说一个好的解决方案是使用归一化的数据库(就像我在开始时说的那样)创建类似于日志表的内容。创建一个仅用于存储历史记录的表,如果不需要此历史记录,我认为相同的想法可行,但是您无需更新新记录,而只需更新现有记录即可。如果两者都需要,我想在数据库上创建两个表,一个表用于存储历史数据,另一个表用于存储合并的数据。


0
投票

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

为此,如果您有定期更改的数据,例如每天的ConfirmedData和deathsData字段,则应每天将它们作为新行添加。

您可以通过将静态数据(您所在的国家/地区数据)放置在单独的表中来确认数据和ConfirmedDeaths数据的方式来避免重复使用静态数据(您的国家/地区数据,然后只需要返回到您的国家/地区表的索引链接。

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


0
投票

您将遇到以现在的方式索引数据的问题。首先,您似乎并未存储所采取措施的实际日期。您可能还希望最终扩展度量,例如,添加recoveredfalse-positive

我将根据以下建议提出一个模型:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.