gpt4 book ai didi

python - 在数据库中具有类似实例的行为

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:28 26 4
gpt4 key购买 nike

抱歉标题不好,但我不知道如何简而言之。问题如下:

我有一个代表一组的通用项目,我们称它为汽车。现在这个 Car 有属性,范围在一定范围内,例如对于普通 Car 来说,速度在 0 到 180 之间。在这里想象更多具有范围的属性,例如颜色在 0 到 255 之间,无论该值代表什么。

所以在我的表 GenericItems 中我有:

ID    Name

1 Car

在我的属性中我有:

ID   Name   Min_Value    Max Value
1 Speed 0 180
2 Color 0 255

因此 Car 和 Attributes 之间的关系是 1:n。

现在我开始拥有我的Car 的非常具体的实例,例如 FordMustang、FerrariF40 和 DodgeViper。这些是特定实例,现在我想为它们的属性赋予特定值。

所以在我的表 SpecificItem 中我有:

ID    Name           GenericItem_ID

1 FordMustang 1
2 DodgeViper 1
3 FerrariF40 1

现在我需要第三个表 SpecificAttributes2SpecificItems,将属性与 SpecificItems 匹配:

ID    SpecificItem_ID   Attribute_ID   Value

1 1 1 120 ;Ford Mustang goes 120 only
2 1 2 123 ;Ford Mustang is red
3 2 1 150 ;Dodge Viper goes 150
4 2 2 255 ;Dodge Viper is white
5 3 1 180 ;FerrariF40 goes 180
6 3 2 0 ;FerrariF40 is black

这个设计的问题是,如你所见,我基本上总是复制所有行的属性,我觉得这是糟糕的设计,不一致等等。我怎样才能以正确的、规范化的方式实现这个逻辑怎么办?

我希望能够拥有多个通用项目,具有多个以最小/最大值为间隔的属性,可以用特定值“实例化”

最佳答案

看起来您正在尝试将实体属性值复制为一种设计,这会导致出现很多丑陋的表格(好吧,通常它是一个包含所有内容的表格)。

http://en.wikipedia.org/wiki/Entity-attribute-value_model http://ycmi.med.yale.edu/nadkarni/Introduction%20to%20EAV%20systems.htm

讨论 EAV 往往会导致“宗教 war ”,因为使用它的好地方很少(许多人说好地方为零),还有其他人认为,既然它非常灵活,就应该到处使用。如果我能找到我正在寻找的引用,我会把它添加到这里。

关于python - 在数据库中具有类似实例的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1327848/

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