2017-01-08 7 views
2

私はテーブルを作成してMySQLに弱いエンティティを作成することができ、私はこのようなコードを持っているか知りたい:mySqlで弱いエンティティを作成する方法は?

CREATE TABLE users(
    user_Id int AUTO_INCREMENT, 
    full_Name varchar(60), 
    email varchar(30), 
    password varchar(30), 
    reg_Date timestamp 
); 

CREATE TABLE personal_Infos(

    ... 
); 

これらはテーブルで、私が知りたいすべてが私はeach-に接続することができます方法です他の外部キーを持つ他のプライマリキーを2番目のテーブルに作成する必要がありますか? (2番目のテーブルには最初のテーブルの情報がいくつかあります)

+1

1の下に示すように、あなたはあなたのusersテーブルに外部キーとして追加することができ、personal_Infosテーブル内のプライマリキーがP_idであると仮定しますか? 2)「personal_Infos」の定義の少なくとも一部を私たちに見せて、それがどのように「ユーザ」に関連しているかを説明し、有用な助言を与える必要があります。 – duskwuff

答えて

0

2番目のテーブルに別のプライマリキーを作成する必要がありますか?

はい、あなたはあなたの第二のテーブルpersonal_Infosテーブルの主キーを作成する必要がありますし、その主キーはあなたのusersテーブルの外部キーになります。

どうすれば外部キーで相互に接続できますか?

は、あなたが「弱い実体」とはどういう意味ですか)

CREATE TABLE users(
    user_Id int AUTO_INCREMENT, 
    full_Name varchar(60), 
    email varchar(30), 
    password varchar(30), 
    reg_Date timestamp, 
    p_id int not null, 
FOREIGN KEY (P_Id) REFERENCES personal_Infos(P_Id) 
); 
+0

これは1:多くの関係ですか?どちらの方向に? –

+0

列のペア '(user_Id、p_id)'は関係を表します。現在実装されているように、同じ 'p_id'が複数回出現する可能性があるので、1対多の関係になります。同じ' p_id'値を多くの異なる 'user_Id'値に関連付けることができます。これを1対1の関係にするには、一意の制約を 'p_id'列に追加することができます。テーブル定義のFK制約は行の接続や関連付けを行わず、 'p_id'の値が' personal_Infos'テーブルのサブセットであることを保証します。 – reaanb

+0

'1:1'か' 1:many'の関係は、 'personal_Infos'テーブルに含まれるデータのタイプに依存します。 'personal_Infos'テーブルのいずれかの行のデータが' users'テーブルの複数の 'user_Id'に関連づけられる場合、それは' 1:many'関係です。 'personal_Infos'テーブルのいずれかの行のデータが' users'テーブル内の 'user_Id'のいずれかにしか関連付けられていない場合、それは' 1:1'の関係です。 – Yousaf

関連する問題