2017-07-05 9 views
0

システムのすべてのユーザーは、メインの「ユーザー」クラスから派生しています。同様に、追加のユーザー情報を提供するために、特定のユーザータイプに必要なテーブルと結合された1つのメインの「ユーザー」テーブルを持つ同じ方法でデータベースを構成したいと考えています。両方のテーブルの主キーを使用する外部キーの関係

参照例として、これらの3つの基本的なテーブル:

表 "ユーザー"
のuser_id | user_email | user_firstname | user_lastname | ...

テーブル "従業員"
user_id | employee_staff_number | ...

"admin"
user_id | admin_permissions | ...

すべての3つのテーブルには、プライマリキーとして「user_id」列があります。これは明らかに、常に同じユーザーに同じ値を持ちます。

しかし、私は外来キーを実装しようとしました。そのため、主なユーザーテーブルに対応するエントリがない派生テーブルにはユーザー行が存在できません。

#1215 - Cannot add foreign key constraint 

も「USER_ID」は可能にするために、派生テーブルの主キーを新規に導入することなく、これを実装する方法がありますエラーで

ALTER TABLE `employee` ADD CONSTRAINT `fk_employee` FOREIGN KEY (`user_id`) REFERENCES `database_name`.`user`(`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT; 

結果、以下のSQLを実行しようとすると、それらの定期的なインデックス?チェックする

答えて

2

2つのこと:

  • userの主キーとして宣言user(user_id)ですか?
  • user.user_idemployee.user_idは同じタイプですか?

外部キー参照として使用するには、インデックスをuser(user_id)にする必要があります。このような索引を作成する最も良い方法は、それを主キーと宣言することです。

関連する問題