MySQL入門

リレーションとは1

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
リレーションは、近年のデータベースで最も特徴的な機能の一つで、複数のテーブルにデータを分散させることで効率よく管理することができる仕組みです。ここでは、複数テーブルを利用するメリットを紹介しましょう。
講師:
11:38

字幕

ここではリレーションというものについて 紹介していきたいと思います 一言にデータベースと言いましても 実は様々な種類があります これまでにカード型データベース といったものや ツリー型ですとか オブジェクト思考型というような 様々な種類のデータベースが 生まれてきました 今 現在一番主流になっているのが RDB と言われる Relational Date Base と言われるものです MySQL ももちろん この Relational Date Base の1つに なっています Relational Date Base の 最大の特徴が その relation というものを 貼ることことができる ということです 実際にやりながら 紹介していきましょう ではここでは こちら MySQL を MAMP から 起動します スタートページで pfpMyAdmin と行きまして ここでは mydb という名前の データベースの中に item table というテーブルを 準備しました こちらにはいくつかの野菜や果物が 記録された商品テーブルがあります もしまだデータベースなどを 準備していない場合は こちら左上の「データベース」 という所から mydb という名前の utf8_general_ci の データベースを作成し その後 こちら「インポート」 という所から 今回 lesson_03_09 というファイルが 準備されていますので こちらをインポートしてご利用下さい では item table で Relational Date Base を体験してみましょう まず 今 このテーブルには 「いちご」「りんご」「みかん」 といった果物と 「キャベツ」「きゅうり」 といったお野菜が 一個のテーブルの中で 混在しています このままですとわかりづらいので この野菜と果物の見分けが つくようにしたいと思います やり方としてはいろいろありますが テーブルを2つに分けて 野菜テーブルと果物テーブル等にする というのも ありかもしれません しかし そのようにしてしまうと 後で非常に扱いづらくなってしまうので 基本的に商品という括りでの データであれば 1つのテーブルの中に収めるべきです そして その1つのテーブルの中で これは果物 これは野菜 というように分類が必要なのであれば フィールドを増やして 分類を管理するようにすると良いでしょう では例えば1つのやり方として このような方法があります こちら「構造」のタブをクリックし こちら「1 個のカラムを追加する」で 「指定カラムの後に」の ラジオボタンをチェックします そして id の後に「実行」として ここでは genre_name としましょう VARCHAR として 200 ぐらいで作ります このように保存しますと こちら id の後に genre_name というのが出来上がりました ではこの genre_name という所に ジャンルを入れていきましょう すべてチェックして変更し 1つ1つに「くだもの」 (タイプする音) そして「野菜」 (タイプする音) と入れます 「実行」すると これで このように「くだもの」が「いちご」 「くだもの」が「りんご」という形で 分類ができるようになりました このようにすれば 例えば SQL で「くだもの」の 一覧だけを出したい という場合には このように item table から where genre_name= 'くだもの' とすれば このように「くだもの」の 一覧だけを出すことができます もちろん「野菜」を出したい場合は このように「野菜」と指定すれば「野菜」の 一覧をだすことができるというわけです これで基本的な管理というのは 可能なんですが 実はこれは非常に効率の悪い方法に なってしまっています 何故なら1つはここに 「果物」と記述して 果物を分類するというのは 非常に運用者に任せられた管理に なってしまっています 例えば同じ果物であっても 平仮名なのか それともこのように「果実」と書く くだものなのか ということで人間の目から見ると どちらも果物なんですが コンピューターから見ると この状態ですと 「あおりんご」だけは別のジャンルである と認識されてしまいます そのため全く間違えないように ジャンルを毎回記入しなければならない という大変さがあります そしてもう1つは こちら 今 genre_name という このフィールドには VARCHAR 型を割り当てています VARCHAR 型は1つのフィールドにつき 数バイトというデータ量が必要になってしまい それなりのデータ量になってしまいます これが数千件 数万件という データになる場合に このちょっとした情報が もの凄い膨大なデータ量になり ハードディスクを圧迫することに なってしまいます そこで この genre_name というのは あまり好ましくないので このようにしたいと思います genre_name を一度 削除しましょう こちらの削除ボタンをクリックして戴くと genre_name は削除できます そして代わりに「一個のカラムを追加する」で id の後に ここでは genre_id というものを 付けたいと思います こちらは INT 型で良いでしょう もしくはもっと小さな TINYINT でも ここでは構いません ここでは INT 型として保存します genre_id というのを使えば このデータ量は 先程の VARCHAR に比べれば ぐっとデータ量が小さくなります そして 例えばここでは こちら 「いちご」「りんご」「みかん」 「あおりんご」そして「オレンジ」 これらはそれぞれ果物なので 果物は1番というふうに定め 1番の id 番号を振りました そして「キャベツ」と「きゅうり」は お野菜なので ここでは genre_id を 2番にしましょうと定め このように 2番という番号を振りました このようにすれば データの容量を小さくし しかも果物と「果実」という漢字と 平仮名のように 同じ読み方なのに違う文字種に してしまうというような間違いも 非常に少なくなります これで絞り込む場合は 当然ながら select * from item_table where genre_id =1 とすれば これで果物を取得することができ 2とすれば これでお野菜を取得することができる というわけです さて これでこの item table というものについては 非常に効率よくなりましたが このまま運用を続けていくには 少し大変です というのは genre_id が1番が果物で 2番が野菜であるというのは 今私たちはわかっていますが 例えば他の運用者の人には それはわかりませんし もしかしたら一週間後に 私たちが商品を追加する時に どちらが果物でどちらが野菜なのか というのは数字を見ただけでは 判断できないかもしれません そこでもう1つここに テーブルを作成し このジャンルを管理するテーブル というのを作ると便利でしょう では新しいテーブルを作成していきます 今 mydb が選ばれている状態で 左側の「テーブルを作成する」 というメニューがあるので こちらをクリックしましょう または こちら mydb というのを選んだ時に 下の部分に「テーブルを作成する」という ダイアログボックスがあるので こちらで作っても構いません ではここでは こちら SQL のタブをクリックし こちらにテーブルを作る SQL を 記述していきます テーブルを作る SQL は create table から始まる SQL でした ここに今回は genre_master という名前のテーブルを作成します フィールドとしては id int primary key auto_increment のオプションを付けます そして genre_name こちらは varchar の 200 としましょう ひとまずはこれだけで フィールドは結構です 他に付け加えたければ 勿論付け加えても構いません ではこちらで実行していきます すると このように genre_master というテーブルが新しく出来上がりました ではこの genre_master に今は データが1件も入ってませんので データを入れていきましょう insert into genre master set としまして genre_name が まずは「くだもの」です そして insert into genre_master set genre_name が「野菜とします」 勿論他にも 追加しても構いません ここでは「菓子」 といったジャンルを加えましょう ではこちらで実行します すると genre_master には このように 1番が「くだもの」で 2番が「野菜」といったような形で わかるようになっています これにより item table に書いてある この1番のデータが genre_master のこちらの genre_name から 紐解けば「くだもの」であることが わかるようになりました データベースの中には複数のテーブルを 作ることができるわけですけれど このようにテーブル同士に関連を持たせて 複数のテーブルにデータを持たせれば 無駄なく しかもわかりやすいテーブルを 作ることができます 更に SQL を組み合わせると もっと便利に使うことができるんですが それについては次のレッスンで お話していきましょう

MySQL入門

このコースではPHPとMySQLというデータベースを組み合わせたWebシステムを構築する手法について解説します。「データベースとはなにか」を説明したのち、プライマリーキーやリレーションなどの重要な用語についても解説しながら実際にデータベースを動かしていきます。

3時間14分 (29 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2013年12月31日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。