1

我正在构建一个 CMS,我想添加的功能之一是用户指定的伪表,让具有足够权限的用户创建表、列、行和字段。显然,出于安全原因,让他们实际访问数据库是不明智的,所以我正在考虑创建一个表模型和相关的子模型(列、行、字段)。这是我目前正在查看的架构:

UserTable:
- id:int
- title:string
- :has_many UserColumns
- :has_many UserRows
- :has_many UserFields :through => rows

UserColumn:
- id:int
- table_id:int (foreign key)
- title:string
- type:enum
- :belongs_to UserTable
- :has_many UserFields

UserRow:
- id:int
- table_id:int (foreign key)
- :belongs_to UserTable
- :has_many UserFields

UserField:
- id:int
- row_id:int (foreign key)
- column_id:int (foreign key)
- data:string

我仍然面临的最大问题是UserTable->UserField关系。看起来既可以贯穿也可以UserColumn贯穿UserRow。后者对我来说感觉更直观,所以这就是我目前正在使用的,但如果有充分的理由去任何一种方式,我想听听。同样,如果有任何我没有看到的关键问题,或者只是处理整个混乱的更简单方法(尽管这似乎相当简单)。

4

1 回答 1

1

我会使用方案,具体取决于涉及多少用户。使用新用户创建新方案,然后创建所需的表是相当容易的。

通过完整的方案,您可以在非常精细的粒度上控制访问,提供简单安全的备份和数据迁移等。

你为什么不首先考虑使用方案?

于 2012-08-04T20:27:22.490 回答