gpt4 book ai didi

oracle - "union"或 "variant record"的规范表达式?

转载 作者:行者123 更新时间:2023-12-02 08:23:21 25 4
gpt4 key购买 nike

假设我有一些数据,需要在一张表中表达多种类型。例如,“事件”表可能包含以下用户事件的条目:(“登录”、“注销”、“创建”、“删除”)。当然,每个事件的关联信息会因事件类型而异。

当前“事件”有(event_num,event_type),以及每个事件类型的表,按 event_type 进行区分。

在 Oracle 中是否有规范的方式来表达这一点?在通用 SQL 中?

最佳答案

关系纯粹主义者会说每​​个不同的事件都是它自己的实体。听起来您已经在一半地遵循该模型(每种类型都有一个表)。父 events 表在实践中确实没有增加什么。您无法真正从具有不同架构的表中UNION 行,并且“重载”外键几乎总是很麻烦。

最常见的是,我看到这些“事件”表合并为一个“日志”表。编译所有事件并将其呈现在应用程序中变得更加容易。从历史上看,记录事件的不同属性被表示为包含附加信息的自由文本字段,但我建议这对于 XML 数据类型来说是一个很好的用途。

您最终会得到如下的事件表:

CREATE TABLE events 
(
Event_num int,
event_date datetime,
user_id int,
... //other attributes common to all events
event_data XMLTYPE
)

这允许您将所有数据合并到一个表中,同时仍然允许不同事件使用不同的属性。这是关系数据库中 XML 的常见用例之一,是对存储事件日志数据的旧方法的改进。

关于oracle - "union"或 "variant record"的规范表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127809/

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