2015-10-07 49 views
0

我有一个有趣的高级编程问题:我有一个数据录入Rails应用程序与MySQL数据库。我已经为使用应用程序中的所有数据库字段的人编写了架构。允许用户打开或关闭(基本上隐藏)任意数量的数据库字段?

但是,将会有用户可能只想使用这些字段的一半。他们正在进行一个较小的操作,并且不会跟踪更多的数据。他们应该能够打开或关闭任何这些字段,以便在输入或查看其数据时不会看到它们。

现在,我可以为用户创建一个带有外键的表格(或者我的例子中的帐户),并为我的应用程序中的每个字段设置布尔值 - 但超过一百个,然后每次修改应用程序的架构,我也必须修改这个表。然后,我会使用该表来有条件地隐藏或显示这些字段。

我想不出任何其他方式,这是真的不太理想。

是否还有其他数据库可以更好地适应这种情况,如NoSQL或文档存储或PostgreSQL?或者任何人都可以为这样的问题提出一个更好的游戏计划?

+0

查看我亲爱的先生,意见。 – e4c5

+0

我会保持表格不变,并将其视为纯粹在UI中的表示层处理的用户配置属性。 –

+0

@CraigRinger我肯定会让它与演示文稿/视图/ UI进行交互。 “如果用户启用了此字段,请显示”。我只需要一个好方法 - 或者,最好的方法 - 来存储这些数据。 – gregblass

回答

0

我现在要使用的解决方案是坚持使用MySQL,并使用rails来序列化要隐藏的数据库字段数组。这可能是我使用的方法,除非其他人提供更好的见解。

0

根据你的问题,我认为MongoDB是完美的,因为它的无模式性质。

MongoDB是一个JSON风格的数据存储。存储在数据库中的文档可以具有不同的字段集合,每个字段的类型不同。人们可以有以下对象在一个单一的集合:

{ a : “Joe”, b : 3.3, c : [1,2,3] } 

{ a : “Kate”, x : “abc” } 

{ q : 456 } 

当然,使用实际问题的数据库时,该数据确实有相当一致的结构。像下面的内容会比较常见:

{ name : “Deepak”, age : 30, interests : ‘cricket’ } 

{ name : “Greg”, age : 25 } 

所以你的情况,你可以存储任何领域需要为每个用户并只显示那些真正存在。

0

在PostgreSQL中,您不仅可以在表格上授予权限,还可以在列上授予权限。

如果特定用户可以从该列读取数据,然后显示该列,您的应用程序可以使用has_column_privilege()来判断。

相关问题