【问题标题】:Database design linked list vs. order by数据库设计链表与排序依据
【发布时间】:2012-05-23 01:11:06
【问题描述】:

我有一个需要按顺序保存一些用户操作的表。我可以通过使用类似于链表的自引用表来保存它,或者根本不使用自引用而只使用时间戳来保持序列。 此表引用了其他表,例如与操作关联的用户和文件。 这些操作将需要支持 CRUD。操作频率按以下顺序排列:检索 > 插入 > 更新 > 删除

您的设计偏好是什么,为什么? 谢谢!

【问题讨论】:

  • "最频繁的操作是检索 > 插入 > 更新 > 删除"... ummmm...
  • 谁能解释这个神秘的评论?该顺序中有什么是不可能的吗?
  • @AndrewCooke 最初的措辞似乎只是一个频繁操作的列表,而不是按顺序排列。然而,所有的操作都是如此。 现在的意思似乎很明显,但以前没有。

标签: sql-server database database-schema


【解决方案1】:

我会避免像瘟疫那样的“链接列表”。他们唯一擅长的就是检索“下一个”项目。问题是每一个额外的“跳跃”都需要一个连接,所以如果你想对其进行参数化(例如,提供一个在给定项目之后检索N项目的函数),那么你需要(1)机器生成的连接之一(2) 多选 (3) 您的 ORM 不太可能移植和/或支持的 SQL。

这与使树在 sql 中臭名昭著的问题相同。它是通过递归连接“修复”的,但这就是上面的 (3)(也许我是过时的,有人会说这些现在得到了很好的支持——如果是这样,我想我会学习......)。

【讨论】:

  • 表达清楚。所有三点都值得一票。想听到更多的意见,但这是一个很棒的!
  • 我不同意您需要多个选择或生成 SQL 的论点。从语法上讲,这些结构现在可以通过递归连接得到很好的支持。也就是说,我认为order by 为大多数工作负载提供了卓越的性能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 2023-03-13
相关资源
最近更新 更多