gpt4 book ai didi

mysql - 如果预计数据库表以后会增加更多列,那么将这些列保留为另一个表的行是否是好的设计?

转载 作者:搜寻专家 更新时间:2023-10-30 23:10:42 25 4
gpt4 key购买 nike

我有一个设备数据库,列是这样的:

DeviceID | DeviceParameter1 | DeviceParameter2  

在这个阶段我只需要这些参数,但也许几个月后,我可能需要更多参数更多的设备,所以我必须添加 DeviceParameter3 等列。

一位 friend 建议我将参数作为行保存在另一个表 (ParamCol) 中,如下所示:

Column           | ColumnNumber 
---------------------------------
DeviceParameter1 | 1
DeviceParameter2 | 2
DeviceParameter3 | 3

然后像这样引用列:

DeviceID | ColumnNumber <- this is from the ParamCol table   
---------------------------------------------------
switchA | 1
switchA | 2
routerB | 1
routerB | 2
routerC | 3

他说,对于 3NF,当我们期望一个表的列可能会动态增加时,最好将列保留为行。我不相信他。

在您看来,这真的是处理列可能增加的情况的最佳方法吗?还是有更好的方法来为这种情况设计数据库?

最佳答案

这是一个“通用数据模型”问题 - 如果您用谷歌搜索这个术语,您会在网上找到相当多的资料。

这是我的观点:当且仅当从应用程序的角度来看参数在质量上没有差异时,然后使用动态行解决方案(即通用数据模型)。定性意味着什么 - 它意味着在您的应用程序中,您不会将 Parameter3 与 Parameter17 有任何不同。

您永远不应该即时生成新列,这是一个非常糟糕的主意。如果列在质量上有所不同并且您希望能够满足新列的需求,那么您可以为每个不同类别的参数使用不同的设备参数表。这个想法是尽可能避免动态 SQL,因为它会带来一系列自身的问题。

关于mysql - 如果预计数据库表以后会增加更多列,那么将这些列保留为另一个表的行是否是好的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20875749/

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