gpt4 book ai didi

mysql - 我应该如何为拥有不同设备的不同用户设计数据库?

转载 作者:行者123 更新时间:2023-11-29 18:55:11 25 4
gpt4 key购买 nike

我对数据库设计感到困惑。

这是我的要求:有不同的用户;用户可以拥有一台或多台设备。一些用户将拥有数千台设备甚至一万台设备。一台设备有很多条操作记录。一天增加10-20条操作记录。

我准备创建一个表,用于记录用户的userId、passWord。不同的用户创建不同的设备列表表记录deviceNum、devicState。一个设备有一个操作表,记录操作记录。

所以,我的数据库将有很多表。我想我还有十万台设备。我应该创建十万个设备表吗?

最佳答案

根据您所说,您只需要 3 张 table :

Users - user_id, username, pass, data, etc...
Devices - device_id, user_id (owner), device_data....
OpRecords - record_id, device_id, record_data_stuff...

所有用户都会转到第一个表,其中包含您需要的用户数据(例如地址、电话、上次登录时间等)的附加字段。

所有设备都注册到Devices 表中,每个设备都与拥有它的用户 - user_id 相关联。您可以根据需要创建尽可能多的列 - 例如设备类型、设备名称、参数、工作时间等等...

所有记录都进入一个表,并且记录与执行作业的设备 (device_id) 相关联。您可以在此处创建附加列来写入特定于记录的数据,例如 start_time、end_time 等...

您不需要为每个设备的记录列表建立单独的表。当您需要显示单个设备的记录时,只需使用 device_id = X 进行 SELECT,您将仅收到您设备的记录。

更新:

ten thousand devices ,everyone make ten operation records one day .ten days

它在 10 天内生成大约 100 万条记录。这是一个挑战。但我不认为将这些数据拆分到不同的表中会给您带来更好的性能。

您应该在 records 表中设置尽可能少的列。在那里放置最少所需的信息。尽量不要使用字符串,如果可能的话仅使用整数。如果您使用字段来写入日期/时间,请使用 TIMESTAMP,因为它最接近整数。在将用于搜索数据的所有列上创建索引 - device_id、时间(如果有此类列)等。这会增加磁盘使用量,但我认为会提高性能。

考虑是否可以在给定时间段后将数据​​备份到外部文件 - 例如一个月后,您将释放 300 万条记录。

关于mysql - 我应该如何为拥有不同设备的不同用户设计数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44184888/

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