gpt4 book ai didi

sql - 对象结构关系数据库设计

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

我正在为我的应用程序设计数据库。我正在使用 PostgreSQL。它必须是通用应用程序,真实世界的结构如下所示:

类别(例如植被)---> 现象(例如树)---> 参数(例如类型 - 针叶树与松树)落叶树,以米为单位的高度 - 10 等等)

数据库可以存储很多类别、现象、参数及其值。一个类别可以有N个现象,一个现象可以有N个参数。

所以我创建了这些表:

Category
--------
id
name


Phenomenon
----------
id
name
category FK (to Category)


Parameter
---------
phenomenon FK (to Phenomenon)
name
value <-- here is a problem

值列可以是字典中的值、varchar 值、数值或 bool 值。如何设计参数表?我是否应该为不同类型的值创建更多列(varchar - 可以是没有完整性检查的字典值,数字, bool 值)。或者有没有考虑到这个问题的设计?我不想使用 JSON 或 XML。

非常感谢您的帮助。

最佳答案

您的Parameter 表是EAV(实体-属性-值)表,关系模型不支持。 RM 是一阶逻辑模型,它要求每个属性都有一个域。

在您的模型中,value 属性的域取决于 name 属性的值。因此,它不是关系型的,但可以在 SQL 数据库中实现,尽管这是我尽可能避免的模式,因为它使完整性约束变得困难甚至不可能,并使查询复杂化。

在一阶模型中,每个不同的参数将处于单独的关系中,例如:

PhenomenonHeight
----------------
phenomenon FK (to Phenomenon)
height

PhenomenonType
----------------
phenomenon FK (to Phenomenon)
type

等等。

关于sql - 对象结构关系数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46636121/

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