0

たとえば、foldersサイト全体の値である 、たとえば 、nameおよびでいっぱいのテーブルがありcreated、各ユーザーがそれらに関する独自のメタデータfolders(たとえばexpanded = 1、またはlabel_color = 'red') を保存できるようにしたい場合、データベースをどのように編成すればよいでしょうか?

私が現在取り組んでいるこの例の図を次​​に示します。

ダイアグラム

これは、ピボット テーブルまたは has-many-through と同様の設定であることに注意してください。ピボット テーブルのデータを保存/アクセスしたいだけです。これは望ましいことですか、またはこの動作を達成するためのより良い方法はありますか?

これが最もエレガントではないかもしれないと思う理由は、フォルダー行をロードするときにメタデータを結合しているため、ORM での結合が複雑になるためです。そのため、そのフォルダーを別のモデルとの関係としてロードすると二重結合が発生します。どうすればこれを回避できますか?

4

1 に答える 1

1

あなたのやり方はベストプラクティスのようです。folder_usermeta テーブルの user_id と folder_id (これら 2 つは一意の行を定義します) の両方に主キーを配置します (ただし、複数の列に主キーを設定することは Kohana ではサポートされていません)。

@biakaveron、シリアル化されたデータをデータベースに保存することは決してありません。必要ではありません。セマンティクスとSQLパワーの両方が失われます。詳細については、こちらをご覧ください。

http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back

于 2013-02-03T11:25:38.170 に答える