アプリケーションデータベースを設定していて、外部キーを設定するのに苦労しています。基本的な設計には、ユーザー、クライアント、contact_mapの3つのテーブルがあります。ユーザーにはクライアントがあります。ユーザーとクライアントの両方に複数の電話と電子メールアカウントがあります。連絡先マップにはそれらが保持されます。 UserID、UserType、Key、Valueを持っています。MySQL - コンポジットパターンで外部キーを設定する(複数のテーブルを1つのマップにマッピングする)
UserID =クライアントまたはユーザーテーブルのID。 UserType = enum( 'user'、 'client') Key/value =電話番号または電子メールアドレスのキーと値のペア。
私は可能なことをしようとしていますが、もしそうなら、どうやってそれをしますか?
これは私が試したものですが、動作しませんでした。
CREATE TABLE CONTACT_MAP
...
CONSTRAINT 'ContactMap_Users'
FOREIGN KEY ('UserID', 'UserType')
REFERENCES USERS ('ID')
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT 'CONTACT_MAP_CLIENTS'
FOREIGN KEY ('UserID', 'UserType)
REFERENCES CLIENTS ('ID')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
しようとしています(そしてそれは、1:NやM:N)を?あるいは、 'CONTACT_MAP'は、実際にはユーザとクライアントが持つリレーションシップから独立していますか? –
彼らの関係から独立しています。ユーザーとクライアントの両方が複数の電話番号、電子メールアドレス、Facebook、Google +、ツイッターアカウントを持つことを単に説明するだけです。 –