2017-08-21 10 views
0

foriegnキーを格納する、またはキーを関連付ける最良の方法であるリレーショナルデータベースでは、どのようにフレーズするのが最適かわからない。例えばPhpMyAdmin経由で外部キーを保存するには?

あなたがテーブルを持っていた場合:

ユーザー

  • ID
  • 名前
  • メール

メール:

  • ID
  • メール

これは私が実際に全体のアイデアを得るのに十分なだけの簡単な作成していますテーブルではありません。

IDを持つキーを作成する場合、ユーザーテーブルを選択すると、電子メールのIDは電子メールフィールドの値になります。私は実際の電子メールフィールドを参照することができますが、これはこの問題を修正しますが、それは無駄ではありませんか?

PHPMyAdminを使用してデータベースとキーを設定しています。

これを行う最善の方法はありますか?

+0

あなたは正しいテーブルの外部キーを作成するmysqlクエリを書くことができますか? – rahulsm

答えて

1

PhpMyAdminは、MySQL操作に対するグラフィカルユーザーインターフェイス(GUI)を提供します。

これを行う最善の方法は、私があなたがすでに作成していると思われるデータベースです。クイッククエリを実行するだけです!

MySQLはかなり怖いですが、一度あなたがそれの概念を理解すれば、実際には本当に簡単です!

あなたの例を見ると、このようなクエリを実行する可能性が高くなります。 (これは大雑把な擬似であり、それ自体では動作しない可能性があります)

ALTER TABLE User 
ADD FOREIGN KEY (ID) REFERENCES Email(ID); 

Easy peasy! :)

必要な構文について詳しく知るには、W3スクールで終わりです! Thisはあなたが見たい記事です!

編集

一般的なデータベースルールとして、私はすべてのあなたの列名(フィールド)はユニークな作りお勧めします!これにより混乱を避けることができます。たとえば、UserIDEmailIDを使用できます。

+0

私は少しMysqlを使用して理解し、時々私はGUIの代わりにMysqlを使用します。私がMysqlで持っている問題は、行を表示したり、ユーザーの行をすべて選択したとき(例えば)、ユーザーテーブルの実際の電子メールを見たいということです。私がIDを参照すればそれを見ることはできませんが、私が電子メールを参照することができれば、私は名前、テキストID、電子メールなどの大きなフィールドをキーで参照する必要があるかどうかはわかりませんでした。 – Richard

+0

電子メールアドレスがプライマリキーとして使用される場合があります(IDの代わりに電子メールを使用)。しかし、これは電子メールを更新する必要がある場合には問題を引き起こす可能性があります。 私は他の回避策を提案するのにPhpMyAdminにはあまり精通していませんが、あなたができるようにすることができるかもしれないことは、あなたが好きなようにレイアウトデータを送ることができる管理パネルのseom種類を作成することです!しかし、それはまったく前述の見解を持つ目的が何であるかにかかっています! – Will

+0

あなたが何を意味しているのか分かりますが、私はキーの電子メールフィールドを参照してuiniqueにしていますが、両方のテーブルにAuto Increment Primary KeyでIDを持っていきます。つまり、誰かが自分のメールアドレスを更新したいのであれば、新しいメール行を作成するだけです。 しかし、私はすでに管理パネルを作成する予定だったので、私は周りを混乱させなければならないし、何が動作するか見る必要があります!あなたのアドバイスをありがとう! – Richard

関連する問題