oracle日志表设计,数据库设计 – 数据库日志表结构

本文讨论了一种Oracle日志表的设计方法,通过为每个属性创建单独的表来确保数据完整性和NOT NULL约束。同时,通过定义视图`dbo.vLogs`简化查询操作,实现表连接消除,提高查询效率。当需要添加新的属性时,只需增加新的属性表并更新视图定义。
摘要由CSDN通过智能技术生成

因为只有几个不同的属性,所以我会远离名称 – 值对,并为每个属性提供一个具有正确名称和数据类型的单独表.我使用了通用Property_,仅用于演示.

这里的事情是确保在缺少属性表时不插入值,换句话说,所有属性值都是NOT NULL.

为了让生活更轻松,请定义视图

create view dbo.vLogs AS

select

LogCategoryName

, LogTime

, p1_Value

, p2_Value

, p3_Value

, p4_Value

, p5_Value

from LogEntry as e

left join Property_1 as p1 on p1.LogEntryId = e.LogEntryId

left join Property_2 as p2 on p2.LogEntryId = e.LogEntryId

left join Property_3 as p3 on p3.LogEntryId = e.LogEntryId

left join Property_4 as p4 on p4.LogEntryId = e.LogEntryId

left join Property_5 as p5 on p5.LogEntryId = e.LogEntryId

left join LogEntryCategory as x on x.LogEntryId = e.LogEntryId

left join LogCategory as c on c.LogCategoryID = x.LogCategoryID

这个视图(查询)看起来复杂而漫长;但是,如果您尝试下面的查询并查看执行计划,您可能会注意到选择列表中未提及的属性表未包含在计划中(未触及).<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值