【发布时间】:2014-11-27 01:55:14
【问题描述】:
我有一个已经构建的项目(使用 Spring 和 JPA)。其中一项功能允许用户在数据库中添加一个地点(每个地点可以与许多标签相关联,它们还必须得到管理员的批准)。
我想设置一个“待定”状态系统,当用户添加一个新地方时,这个地方被添加到数据库中(在我的例子中是 postgreSQL) 但处于“待定状态”,实际上并不被视为最终位置。 (然后管理员必须批准该位置才能使其对其他用户可见)
Spring 或 JPA 是否提供任何机制来归档此内容? 还是唯一的方法是重新设计表并修改所有查询? (如果是这样,什么是好的设计?添加一个额外的列(状态)?或有分隔表等。?
ps:所以目前我的设计如下:
餐桌位置: id_place / name / etc...
表格标签: id_tag / 名称 /etc..
table place_tag(将每个标签链接到它的位置) id/id_place/id_taf 谢谢!
【问题讨论】:
-
所以你本质上是想添加一行数据,并且只有在管理员验证后才激活它?
-
没错,考虑到我的项目相当大。存档此文件的最佳方法是什么?通过新的数据库设计(这将意味着进行大重构,因为所有现有查询都将被破坏)或者有一个重复的表“pending_place、pending_tag 和 pending_place_tag)?
-
两者都不是,我们这样做的方式是有一个名为“已验证”的额外列,它是一个 tinyint。当用户提交信息时,它保持为假,因此他们可以查看但它不活动,当管理员批准时它变为真,然后数据在应用程序中变为活动。这是最简单的方法。如果您愿意,很高兴将其作为官方答案
-
是的,这也是我的方法之一,但这是最好的方法(它确实很容易,但我在这里寻找最好的设计)。我也完成了我原来的问题。这是否意味着我还必须在我的另外 2 个表中添加一个额外的列?
-
最好有最小的变化和尽可能的标准化(数据库设计)。这取决于数据库有多大,如何运行所有这些因素。从我所见,将单个列添加到具有微小数据集的现有表中是最好的,因为代码和功能代码的业务逻辑也不需要进行重大更改(因此从长远来看,填塞的机会更少)
标签: java spring postgresql jpa