ファイルとメモを顧客、ユーザー、プロジェクトなどにリンクするWebアプリがあります。最初は、customerNote、userNote、projectNote...などのテーブルがありました。
設計上の考慮事項:
1:N個の2乗テーブル(100を超えるcustomerNote、userNote、projectNote、... customerFile、projectFile ... etcテーブル)を管理
したくない2:動的SQL(TableName from LinkType)
3:リンクテーブルを使用するクリーンな方法がわかりません(100以上のNの2乗リンクテーブルなし)
これで、LinkIdとLinkTypeIdを持つNoteテーブルが1つあります。LinkIdはもちろん、client | User | Project|etcテーブルのPKです。LinkTypeIdは、リンクのタイプを指します。
したがって、この:
SELECT * FROM customerNote WHERE Id = 1210
SELECT * FROM userNote WHERE Id = 3281
現在は次のようになっています:
SELECT * FROM Note WHERE LinkId = 1210 AND LinkTypeId = 2
(2は顧客)
SELECT * FROM Note WHERE LinkId = 3281 AND LinkTypeId = 3
(3はユーザー)
私はこのアプローチの単純さを楽しんでおり、それらを私が至る所で呼び出す関数にラップしています。
私の質問は次のとおりです
。1:参照整合性がないと、どのようなパフォーマンスやその他の問題が発生しますか?
2:これはスケーラビリティの問題を引き起こしますか?
3:エレガントな解決策はありますか?
これは私の最初のSO投稿であり、皆さんの助けに前もって感謝します。