C# 我应该如何在数据库中存储这些数据?
我从Github上的CSV文件中读取数据,并将其保存到我的数据库中。然而,我在使用这些数据时遇到了很多问题。我认为我的数据库模型不适合这个。我应该如何在数据库中以这种方式存储数据 我使用的数据库是SQL Server 我当前的数据库模型 我在每天的数据之间使用逗号。我认为这不是一个健康的方法 我怎样才能让这更好? 我在前面使用的json数据C# 我应该如何在数据库中存储这些数据?,c#,json,sql-server,database,C#,Json,Sql Server,Database,我从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 .. ]