4つの列を1つにまとめて、一意の連結値を外部キーの制約としてデータベース全体に分散しやすくする。 4列の情報は、それに接続されている子テーブル全体で簡単にアクセスできるようにするための重要な情報です。MySQL(連結エントリの)4つの部分からなる主キーを作成
データが4つのチャンクになる必要がある理由は、各部分がenum()値または整数長で検証されるためです。なし自分でユニークですが、組み合わせた、彼らは理想的には私はまだこのデータを個別に(B上の例の並べ替え)できるアクセスだろう。..
ある
私が見るオプションは、このです:
- A、B、C、Dからcomposite primary keysを作成し、それを参照するすべてのテーブルにA、B、C、Dを列として含めます。(< - ほとんどの子テーブルでは、データはABCDとしてのみ利用されます)。
- A、B、C、Dを取り込んで新しい列ABCDに連結し、その列をPKにします(構成要素の1つが変更された場合、しかし...)私はすべての子テーブルでABCDを参照できます。
- ABCD PK列に配置する前にデータを検証するBEFORE UPDATEトリガーを使用し、次にA、B、C、D列に入れます(これは2の導関数でも同じです)
複雑な要因は、UIがA、B、C、Dを別々に要求する必要があるということですが、UIプログラムがデータを確認できる保証はありません。
編集:目標は、次の管理者のためにできるだけシンプルでわかりやすいデータベースを作成することです。トリッキーなトリガーはネイティブのソリューションよりも理想的ではありません。
他の列の連結である列を定義することはできません。
または、プライマリキーとして単純な自動インクリメントIDを使用し、他の列を一意のインデックスに入れることができます –
私はこれをやっていましたが、私はABCD情報を子テーブルで簡単にアクセスできるようにしたいと思いますその情報に "参加"するだけのビューを作成する必要があります)明確にするために更新されました - ありがとう! – Trees4theForest
データをキーにエンコードすることは、「スマート」または「インテリジェント」キーと呼ばれる悪い考えです。 – philipxy