我有以下问题:我正在加载一个只有删除和插入的"dif"-table。“更改”由删除和插入决定。
此表没有主键,也没有可排序的字段。我想使用Hibernate加载这个表。(SELECT obj FROM MyDifTable obj WHERE obj.group = groupId
)
现在,我对所有值和上面的查询都使用了一个键,并且没有按照与源表中相同的顺序获得行。
我的问题是:
我知道这是一件设计得很糟糕的事情,我曾试图与设计团队争论,但没有成功。
向你问好,凯
发布于 2012-02-23 07:11:25
关系数据库是基于集合论的一个分支。信息要么在数据库中(在集合中),要么不存在。秩序不是集合中的概念,只有存在才是集合中的概念。这意味着,如果需要,您必须显式地建模排序。
如果必须保持顺序,则必须添加一个"order“子句来对集合的结果成员进行排序。有时,这种排序是外部的(因此您可以将排序的决定推迟到查询提交时间)。在非常罕见的情况下,重要的是将这种秩序内化为“数据集”。
在奇怪的情况下,您需要内部化的排序,您必须将顺序与集合中的数据一起存储;但是,要强制执行"order“子句(查询编写人员可能省略),您可能还必须放置数据的几个存储过程/视图,以确保查询始终以正确的顺序返回。
将列表存储到数据库时,内部化排序的示例很常见。一个通常将列表项及其索引存储在同一行的列表中。这样,当检索到它时,您可以恢复项目和排序。
https://stackoverflow.com/questions/9415404
复制相似问题