2016-09-21 20 views
0

私はデータベースにユーザーを追加するために会社を作ったので、今度は2つのテーブルが必要です。 1つのテーブルは、ユーザが知っている言語とユーザが使用する設計ソフトウェアの別のテーブルを追跡します。複数のテーブルを使用してユーザープロファイルを作成するにはどうすればよいですか?

私はフィールドを持つ3つのテーブル(プロファイル、言語、ソフトウェア)を作成できますか?ユーザーを追加して各テーブルに行を追加すると、

+1

2つの異なる多対多リレーションシップを維持する必要があるため、5つのテーブルが必要です。私は、ユーザーが複数の言語を知っていて、複数のソフトウェアツールを使用していると仮定します。 –

+0

5は何ですか?私はちょうどプロファイル、言語、ソフトウェアと思った – BBDev

答えて

2

複数の多対多リレーションシップを追加するには、情報をいっしょに 'リンクする'ためのテーブルがさらに必要です。

IDはすべて一意のインデックス付き列である必要があります。 AUTO_INCREMENTの使用を検討してください。

表1:ストア可能な言語

|LanguageID |LanguageName| 
|========================| 
|  50 | Python  | 
|------------------------| 
|  51 | Java  | 
|------------------------| 

のように...

表3:

| ProfileID |UserInfo | 
|=======================| 
|  0  | Info  | 
|-----------------------| 
|  1  | Info2  | 
|-----------------------| 

表ユーザのプロファイル情報2が含まれています: languagへのプロファイルリンクを格納します。 es

|ProfileID |LanguageID | 
|========================| 
|  0  |  50  | 
|------------------------| 
|  0  |  51  | 
|------------------------| 
|  1  |  50  | 
|------------------------| 

言語をユーザーのプロファイルに追加するたびに、このテーブルにエントリを作成します。

ユーザーが知っているソフトウェア用にさらに2つのテーブルを追加します。すべての可能なタイプのソフトウェアの1つのテーブル、およびリンクを格納する別のテーブル。

あなたが情報を取得したいときは、下記のような操作を行うだろう:

SELECT * FROM Table3 
LEFT JOIN Table2 
ON Table3.LanguageID = Table2.LanguageID 
WHERE ProfileID = [TheProfileIDToSearch] 

この構造は、一度に複数のテーブルからの情報を返すために一緒にテーブルをリンクするJOINを使用しています。ここにW3Schoolsの簡単な説明SQL JOINSについてです。

関連する問題