设计基准

时间:2013-01-15 07:32:40

标签: java database service

我有一个名为Employee的表,其中包含id,名字,中间名,姓氏作为字段。他们的偏好存储在另一个表中。使用java服务获取每个员工详细信息。每个员工都可以看到其他员工信息。考虑有员工A,B,C和D.员工可以将显示名称首选项设置为第一个,中间,最后或最后,中间,第一个。如果员工A将其显示格式设置为first,middle,last作为首选项,那么其他员工的所有搜索结果都应采用首选格式。所以我们认为我们会获取结果,并在服务中应用首选项。

另一种选择是在另一个表中应用首选项,以便首选项表有两列,每列有一个首选项。因此,直接从首选项中获取结果。

哪种方法最好?

2 个答案:

答案 0 :(得分:1)

如果您只考虑以不同的顺序显示姓名的偏好,例如one preference,则first approach会做得相当不错。

second approach(规范化)在一个user setting multiple preferences (one-to-many relationship)的情况下非常有用,例如名称首选项,要显示的列的首选项等等。

答案 1 :(得分:0)

如果preferences仅影响搜索结果的字段显示顺序,我认为前一个是更好的解决方案。但是,我建议你再考虑preferences的响应能力。恕我直言,java服务应该直接将它传递给web层,如果perferences只是作为视图的元数据。然后,Web层中的一些组件接管perferences并执行相应的显示逻辑。可能是我让整件事变得复杂......

关于第二种方法,它不适合您的场景,因为它对可扩展性不利。如果需要在perferences中显示更多内容,则必须更改表以添加必要的列。我认为TechSpellBound是对的,在Employeepreferences之间创建一对多关系会很好。