我有一个表需要按顺序保留一些用户操作。我可以通过使用自引用表来保存它,它将像链接列表一样或根本不使用自引用,只需使用时间戳来保持序列。 此表引用了其他表,例如用户和与操作关联的文件。 这些操作需要支持CRUD。操作频率按此顺序:检索>插入>更新>删除
您的设计偏好是什么?为什么? 谢谢!
答案 0 :(得分:2)
我会像瘟疫那样避免“链接列表”。关于他们唯一的好处就是检索“下一个”项目。问题是每一个额外的“跳”都需要一个连接,所以如果你想对其进行参数化(例如,提供一个在给定项目后检索N
项的函数),那么你需要(1)机器中的一个 - 生成的连接(2)多个选择(3)您的ORM不太可移植和/或支持的SQL。
这是同样的问题,使得树在SQL中臭名昭着。它是通过递归连接“修复”的,但那是上面的(3)(也许我是老式的,有人会说这些现在得到了很好的支持 - 如果是这样我想我会学习......)。