2017-04-19 9 views
0

フォワードエンジニアツールをMySQL Workbenchで使用して、入力したテーブルに基づいてデータベースを生成しました。私はStardew Valleyのゲームの周りに構築しているデータベースの "Villagers"、 "Fish"、 "Items"などのテーブルを作成することができました。しかし、ERダイアグラムでテーブルをリンクすると、Cooking_Has_Fishなどの関係に基づいて新しいテーブルが作成されました。多くの魚は多くのレシピで使用でき、多くのレシピでは多くの魚を使用できます。しかし、いったん私が料理と魚のテーブルに移入すると、生成されたCooking_Has_Fishテーブルには何もありませんでした。私はこのテーブルがどのように機能するのか、それをどのように使用するのか、それとも人口が必要なのか何かを逃したのかを理解しようとしています。MySQL Workbenchフォワードエンジニアリレーションシップテーブル

読んでいただきありがとうございます。

答えて

1

テーブルはそれ自身で作成されることはありません。テーブルにデータが入力されるようにする必要があります。多対多リレーションシップ用に作成された3番目のテーブルはassociative or junction tableと呼ばれ、最低限、それらが結合する2つのテーブルの主キーが含まれています。

あなたはrecipe_id識別recipiesとfish_id特定の魚を持っている場合は、Cooking_Has_Fishテーブルには、少なくともrecipe_idfish_idフィールドを持っているでしょう。

あなたはcodfish_idは2である)で(recipe_id 1)fish and chipsを関連付けたい場合は、次の挿入するだろう:

insert into Cooking_Has_Fish (`recipe_id`, `fish_id`) values (1,2) 

をこれはタラは、「フィッシュ・アンド・チップスのために必要とされることを意味"フィッシュ・アンド・チップスに必要なコード数など、関連テーブルにフィールドを追加することができます。

要約すると、多対多のリレーションシップを持つエンティティ(テーブル)をどのように関連付けるかに基づいて関連テーブルを作成する必要があります。

+0

Gotcha、ご説明いただきありがとうございます。それは理にかなっている。したがって、関連テーブルにid値しかない場合は、idに関連付けられた名前など、より多くのフィールドを追加する方が良いでしょうか?私はそのテーブルに唯一のIDを設定すると、それほど役に立ちませんと思っています。 – Babeeshka

+1

いいえ、名前を追加しないでください。名前はメインテーブルに保存され、結合によって取得できます。たぶん、リレーショナル・データベース設計に関するいくつかの本/チュートリアルを読む必要があります。これには何も問題はありません。私たちはすべてそこにいました。しかし、基本がなくても先に飛び出そうとすると、データベースから混乱するだけです。 – Shadow