【发布时间】:2026-02-11 17:00:02
【问题描述】:
我是数据库设计的新手,在尝试设计数据库时遇到了问题。这是我的系统: 有 3 种不同的软件(SW_A、SW_B、SW_C)和 500-600 个用户。每个用户都可以使用任何软件并做一些工作。每件作品大约会发送到数据库。每分钟 6 次。 (用户和软件随机) 我想要一个数据库来保存与存档软件相关的所有用户操作,并且还希望跟踪与这些软件相关的所有用户的即时操作。 (仅针对每个软件的不同用户的最新操作)
所以我设计了某事。像这样:
表:SW_X_DATA_ARCHIVE
列:
- 用户 ID
- 数据_日期
- SW_A_ActionID
表:SW_X_INSTANT_DATA
列:
- 用户ID
- 数据_日期
- SW_X_ActionID
当新数据到来时,如果该 UserID 存在,它会更新 INSTANT_DATA 表的相关行,如果不存在则插入带有 UserID 和数据的新行。然后将相同的数据插入到 DATA_ARCHIVE 表中。
问题是:这种工作有更好的方法吗?意见也许? (我读过一些关于物化视图的文章,但不知道如何在这里使用它。) 谢谢
【问题讨论】:
-
物化视图是帮助你还是伤害你的问题取决于你将如何处理数据。如果您几乎所有的检索都只关注存储在 INSTANT_DATA 中的项目,那么您目前的设计可能是最好的。否则,您最好设计一个表,其中视图只为每个用户提取最新的行。这个视图写起来并不简单,运行起来也不会非常快,即使有良好的索引。
-
感谢 Walter,我使用这个设计没有任何问题。
标签: oracle database-design view