これは悪いデザインです。 2列の主キーとそれに2列の外部キーを作成するだけです。これは、「キーに情報をエンコードする」と呼ばれる基本的なアンチパターンであり、「スマート」、「インテリジェント」、または「連結」キーと呼ばれます。良いキーは「ダム」キーです。
例: :
その上、必要はありません これを行うには。
多くのDBMSは、値が他の列から自動的に計算される「計算列」を許可します。 1つを主キーまたは外部キーにするには、通常、それを「永続化」する必要があります。つまり、ビューのように必要なときに計算されるのではなく、通常の列のようにメモリを消費します。 MySQLにはこれらがありませんが、 5.7.5 「生成された列」と呼ばれるいくつかの機能があり、「保存」することができます。ただし、PKまたはFKに対してはこれを行わないでください!
実際の設計上の問題は、データベース/SQLサブタイプ/階層/継承/ポリモーフィズム の処理です。 。