我正在构建一个 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
。后者对我来说感觉更直观,所以这就是我目前正在使用的,但如果有充分的理由去任何一种方式,我想听听。同样,如果有任何我没有看到的关键问题,或者只是处理整个混乱的更简单方法(尽管这似乎相当简单)。