1

私は CMS を構築しています。追加したい機能の 1 つは、ユーザー指定の疑似テーブルです。これにより、十分な権限を持つユーザーがテーブル、列、行、およびフィールドを作成できるようになります。明らかに、セキュリティ上の理由から、実際にデータベースにアクセスできるようにすることはお勧めできません。そのため、テーブル モデルと関連するサブモデル (列、行、フィールド) の作成を検討しています。私が現在見ているスキーマは次のとおりです。

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 に答える