SQLite:为每个日期的多个条目创建表
SQLite: create tables for multiple entries for each date
我是 sql/databases 的超级新手。所以我有很多数据。按日期排序,过去 22 年(~8000 天)的每一天都有多个条目。
我的解决方案是为每个日期创建一个新的 table 并在其中写入条目。
例如
Table - 2020-10-23:
Row1
Row2
Row3
Row4
1
Text
Text
Text
2
Text
Text
Text
3
Text
Text
Text
.
.
.
.
.
.
.
.
1000
Text
Text
Text
Table - 2020-10-24:
Row1
Row2
Row3
Row4
1
Text
Text
Text
2
Text
Text
Text
3
Text
Text
Text
.
.
.
.
.
.
.
.
1000
Text
Text
Text
像这样大约有 8000 个这样的 table,每个条目大约有 800 个条目。所以大约有 600 万条条目。
所以我想问的第一件事是这是否是一个可行的解决方案,因为我需要在同一数据库中为用户数据、身份验证等创建更多 tables。
其次,SQLite 是否是适合此目的的数据库。
您不需要为每一天创建 table。您需要查看需要存储的内容。由于您没有提供任何上下文信息,我将只为您提供可以附加到您的实际数据的一般指南。如果事情不清楚,那么您将需要解释您要存储的内容。
因此,作为一般规则,每个实体的任何单个值都被视为 属性 。无论是复合的,都应被视为单独的实体类型。您需要确保您的数据库位于 normal form 中,以防止不一致和冗余。如果您的数据是相互关联的,并且在逻辑上为每条记录描述了一个实体,那么您现在将只有一个 table,还有一个日期字段和一堆其他字段。如果由于不一致和冗余,将所有内容存储到单个 table 中不是一种可行的方法,那么您将需要将 table 分解为更多的 table。
您的图片表明列是行。这可能是计划错误的迹象。
8000 * k(其中 k 平均小于 1 000)记录在现代 RDBMS 工具的情况下并不多。
当您 select
记录时,您可以 filter/group 一天,实现您可以使用不同的 table 实现的行为。
是否使用SQLite由您决定。然而,SQLite 是一个轻量级的 SQL 工具,如果你想成为专业人士,你可能想切换到其他东西,比如 MySQL、Oracle、SQL Server 或PostgreSQL.
我是 sql/databases 的超级新手。所以我有很多数据。按日期排序,过去 22 年(~8000 天)的每一天都有多个条目。
我的解决方案是为每个日期创建一个新的 table 并在其中写入条目。 例如
Table - 2020-10-23:
Row1 | Row2 | Row3 | Row4 |
---|---|---|---|
1 | Text | Text | Text |
2 | Text | Text | Text |
3 | Text | Text | Text |
. | . | . | . |
. | . | . | . |
1000 | Text | Text | Text |
Table - 2020-10-24:
Row1 | Row2 | Row3 | Row4 |
---|---|---|---|
1 | Text | Text | Text |
2 | Text | Text | Text |
3 | Text | Text | Text |
. | . | . | . |
. | . | . | . |
1000 | Text | Text | Text |
像这样大约有 8000 个这样的 table,每个条目大约有 800 个条目。所以大约有 600 万条条目。
所以我想问的第一件事是这是否是一个可行的解决方案,因为我需要在同一数据库中为用户数据、身份验证等创建更多 tables。
其次,SQLite 是否是适合此目的的数据库。
您不需要为每一天创建 table。您需要查看需要存储的内容。由于您没有提供任何上下文信息,我将只为您提供可以附加到您的实际数据的一般指南。如果事情不清楚,那么您将需要解释您要存储的内容。
因此,作为一般规则,每个实体的任何单个值都被视为 属性 。无论是复合的,都应被视为单独的实体类型。您需要确保您的数据库位于 normal form 中,以防止不一致和冗余。如果您的数据是相互关联的,并且在逻辑上为每条记录描述了一个实体,那么您现在将只有一个 table,还有一个日期字段和一堆其他字段。如果由于不一致和冗余,将所有内容存储到单个 table 中不是一种可行的方法,那么您将需要将 table 分解为更多的 table。
您的图片表明列是行。这可能是计划错误的迹象。
8000 * k(其中 k 平均小于 1 000)记录在现代 RDBMS 工具的情况下并不多。
当您 select
记录时,您可以 filter/group 一天,实现您可以使用不同的 table 实现的行为。
是否使用SQLite由您决定。然而,SQLite 是一个轻量级的 SQL 工具,如果你想成为专业人士,你可能想切换到其他东西,比如 MySQL、Oracle、SQL Server 或PostgreSQL.