ノードと呼ばれるエンティティに新しいユーザー定義属性を許可するデータベース (mysql で使用するため) を設計しています。
これを達成するために、他に 2 つのテーブルを作成しました。すべてのカスタム属性と、1..n および n..1 の関係を作成するノードとcustomvarsの間の関係を定義する *nodes_customvars* を保持する1 つのcustomvarsテーブル。
描画されたモデルへのリンクは次のとおりです:スケッチされたデータベース モデル
これまでのところうまくいっています...しかし、テーブルごとに個別のIDを使用してINSERTとUPDATEを適切に処理できません。
たとえば、特定のノードに挿入された *nodes_customvars* テーブルにcolorというカスタム属性がある場合、「INSERT ... ON DUPLICATE KEY UPDATE」を試みると、常に挿入または常に更新されます。
*nodes_customvars* テーブルから「ID」フィールドを削除し、ノード idとcustomvars idを使用して複合キーにすることを考えましたが、これが最善の解決策であるかどうかはわかりません...
この記事とコメントも読みました: http://weblogs.sqlteam.com/jeffs/archive/2007/08/23/composite_primary_keys.aspx
これに対する最善の解決策は何ですか?
編集:
補足: *nodes_customvars* idはわかりません。nodes idとcustomvars idだけです。*nodes_customvars* テーブルの分析:
1-このテーブルでノード IDおよび/またはcustomvars IDを UNIQUE にすると、「INSERT ... ON DUPLICATE KEY UPDATE」を使用すると常に更新されます。複数のノードが同じcustomvarを共有できるため、これは誤りです。
2-UNIQUEキーを作成しない場合、「INSERT ... ON DUPLICATE KEY UPDATE」は常にINSERTになります。これは、UNIQUEキーがステートメントにまだ見つからないためです...