おれ、エンジニアになるよ。

エンジニア志望の大学生がISUCON7出場を目指す成長日記

「中間テーブル」ってなんぞや

こんばんは。

今日は、今朝に就活先の会社から「次の選考に進んでください」連絡が入り、さっきさぼさんに大学近くの油そばご馳走になって、お腹も気分も満たされた良い1日でした。

 

 

と言いたいところですが、1つだけ満たされないことが。

 

そう、タイトルの通り、「中間テーブルってなんぞや」問題です。

今日締め切りだった課題の「LINEを作る」は、この中間テーブルに手こずって未完成となってしまいましたが、なぜか次の選考に進めるみたいですww

(冒頭に書いた会社とは別です)

 

もちろん、このまま未完成に終わるのは悔しいので最後まで完成させます。

ってことで今回は「中間テーブル」についてまとめていきます。

 

 

中間テーブルってなんぞや

 

例えばの話。

学校の授業を思い出してください。

国語やら算数やら体育やらありますよね。

んで、もちろん生徒は1人ではなく30人ぐらいいます。

マサは国語と算数と理科と社会の授業に出てる。

ディックスくんは国語と算数と体育と図工。

(おめーらもっと授業出ろよww)

 

このとき、「isucon_school」というデータベースには

・studentsテーブル(学籍番号、学年、名前、性別、etc)

・lessonsテーブル(科目名、先生の名前、教室、etc)

があるのはなんとなくわかりますね。

 

さて、先生は「どの授業に誰が出てるか」を知りたい時どうすればよいのか?

 

そもそも、1つのレコードに対して各データ項目は1つしか入らないんです。

けど、国語の授業にはマサとディックくんの複数人がいる。

逆に、マサは4つの授業受けてるし、ディックスくんもそう。

 

つまり、「多:多」の関係なんです。

(かなり説明省いてます。すいませんww)

 

ってことで、あら困った。

 

これを解決してくれるのが、やっと出てきた

「中間テーブル」

なんです。

 

 

話を戻すと、先生が知りたかったのは、

「どの授業に誰が出てるか」

でした。

 

ってことで、「studentsテーブルの名前」と「lessonsテーブルの科目名」を紐付ければよさそうです。

この紐付けによってできたテーブルが「students_lessonsテーブル」で、「科目名」と「名前」のデータを持つ中間テーブルとなるわけです。

 

 

 

と、理解できたのはここまでww

実際に開発していこうとすると分からなくなり発狂しそうです。

ってことで、今回は中間テーブルについてでしたが、ぼくとしてはDB設計の大切さについて学んだ感じでした。

 

ではでは、今日はこの辺で。