我有按日期排序的数据,过去22年(约8000天)的每一天都有多个条目。我的解决方案是为每个日期创建一个新表:
表-2020/10/23:
Row1|Row2|Row3|Row4
-|-|
1|Text|Text|Text
2|Text|Text|Text
3|Text|Text|Text
|。|。|。|。|
|。|。|。|。|
1000|Text|Text|Text
表-2020/10/24:
Row1|Row2|Row3|Row4
-|-|
1|Text|Text|Text
2|Text|Text|Text
3|Text|Text|Text
|。|。|。|。|
|。|。|。|。|
1000|Text|Text|Text
这样将有大约8000个表,每个表将有大约800个条目。因此,大约有600万个条目。
这是一个可行的解决方案吗(因为我需要在同一数据库中为用户数据、身份验证等创建更多的表)?SQLite是适用于此的数据库吗?
1条答案
按热度按时间njthzxwz1#
您不需要每天都创建表。你需要看看你需要储存什么。由于您没有提供任何上下文信息,我将仅为您提供可附加到实际数据的一般指导原则。如果情况不明朗,那么你需要解释你想要存储什么。
因此,作为一般规则,每个实体的单个值都被视为属性。无论什么是复合的,都应该被视为单独的实体类型。您需要通过确保您的数据库位于normal form中来防止不一致和冗余。如果您的数据是相互关联的,并且逻辑上为每个记录描述了一个实体,那么现在您将拥有一个表,它有一个日期字段和一组其他字段。如果由于不一致和冗余,将所有内容存储到单个表中不是一种可行的方法,那么您需要将表分解为更多的表。
您的图片显示这些列是行。这很可能是计划失误的迹象。
在现代RDBMS工具的情况下,8000*k(其中k平均小于1000)记录并不多。
当您对
select
记录进行select
时,您可以按天进行筛选/分组,从而实现您可以使用不同的表实现的行为。使用或不使用SQLite是您的决定。然而,SQLite是一个轻量级的SQL工具,如果你想变得专业,你可能想要切换到其他工具,如MySQL、Oracle、SQL Server或PostgreSQL。