gpt4 book ai didi

mysql - 需要正确的数据库结构以减小大小

转载 作者:可可西里 更新时间:2023-11-01 08:51:17 27 4
gpt4 key购买 nike

我想正确地设计我的数据库。也许有人可以帮助我。

我有一个设备,每 3 秒将大约 100 个键/值写入一个表。有人建议这样存储:

^ timestamp ^ key1 ^ key2 ^ [...] ^ key150 ^

| 12/06/12 | null | 2243466 | [...] | null ^

但我认为那是完全错误的,而且不是动态的。因为我可以有很多空值。所以我尽力做到最好,并按照我在学校学到的方式设计它: http://ondras.zarovi.cz/sql/demo/?keyword=tempidi

这是我为每个值编写时间戳的问题,这意味着在 100 个值内它将始终相同并产生大量数据。

有人可以给我提示如何减小数据库大小吗?我的 ERM 基本正确吗?

最佳答案

我不会太担心数据库的大小。您更大的问题是维护和灵 active 。

这是我会做的。首先,使用您的设备可以写入的可能 key 定义并填充此表:

tblDataKey
(
ID int primary key (auto-increment - not sure how mysql does this)
Name varchar(32)
)

接下来定义一个“数据事件”表:

tblEvent
(
ID int primary key (auto-inc)
TimeStamp
...anything else you need - device ID's? ...
)

然后将事件与键及其值进行匹配:

tblEventData
{
EventID INT FK-to-tblEvent
KeyID INT FK-to-tblDataKey
DataValue varchar(???)
)

现在,每隔多少秒,您的数据就会进来,您可以根据需要在 tblEvent 中创建一个条目,并在 tblEventData 中创建多个带有键值的条目。并非每个事件都需要每个键,您可以在未来扩展键的数量。

这真的很棒,因为空间没有浪费,您可以使用特定的数据键和值轻松地查询 evnet。当您需要生成“类似交叉表”的事件和数据项表时,这种结构就会失效。您必须决定这是否是个问题。

关于mysql - 需要正确的数据库结构以减小大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13750128/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com