テーマ研究会(2010/10/05)
~ データベース~
政策情報学部 渡辺恭人
データベース
• Webアプリケーションに必要なもの
• データベースとは?
– 必要に応じて情報を取り出せるしくみ、たとえば 住所録みたいなもの• 例、住所録
– 知人や友人の住所が列記されている – 必要に応じて探せる • 例、山田さんの電話番号は? – 大がかりなもの:NTTの電話帳 2データベースとは?
• 住所録や電話帳はデータベース?
– 本当の意味ではデータベースではない – なぜなら、コンピュータのデータではないから• 住所録や電話帳の内容を入力してコンピュー
タのデータにしたら、データベース!
– どこがどうかわるのか? – 紙の住所録でできなかったことができる • 名前以外でも検索できる、名字だけ、名前だけ、住所 、電話番号でも。 3データベースにするには?
• コンピュータのデータであること以外にもある
• データの作り方・持ち方に規則が必要
– 登録されるデータの単位が1件単位でばらばらに できること – データのどの部分がどのような意味を持つかが 決まっていること 4レコードとフィールド
• レコード
– データは、1件ごとにばらばらにできなければなら ない・この1件をレコードという • 住所録の場合、一人一人の情報がレコード – 100人分のレコードは100レコード• フィールド
– レコードの構成:氏名・郵便番号・住所・電話・メル アド・身長・・・ • すべてのレコードは同じ欄に区切られなければならな い • この欄をフィールドという 5データベースと表計算
• 表計算と同じに見える
– 表計算は、行と列で構成されている – Excelで住所録を作る人もいる • データベースの要素を満たすから同じことができる• 概念の違いを理解する
– データベース:仕組みの概念を指す • ソフトの種類を限定する言葉ではない – 表計算:ソフトの種類を指す – データベースがデータベースであるためには、そ の要素を満たしていれば、ソフトはなんでもいい 6データベースとして便利?
• 表計算
– 市川市に住んでいる人のデータを抜き出す場合 • 住所の列でソートし、条件に合う行を選択し、コピーし て別のワークシートに貼る• ワープロ
– 行・列の概念がないからもっと不便• データベースソフトの出現
– データベースを管理するための専用ソフト • Microsoft Accessなど 7データベースソフトの役割
• データファイルの取り扱い
– 住所録:住所のデータが格納されているファイル• 表計算
– 全住所データがワークシートに表示される• データベースソフト
– レコード単位で表示と入力ができる – 検索や並べ替えのメニューがある – 画面の設計ができる – 定型的な業務を行うためのプログラム言語もある 8データベースソフトの現状
• 個人ベースだとあまり流行っていない
– 高い:4~5万円 – 中途半端に難しい – 使い道がない• 会社の業務だけ
9住所録だけじゃないデータベース
• 例、日記
– 日々の記録をつけるのに使う • ファイルでもできるが・・・いろいろ面倒 • 日記ソフトでもできるが・・・いろいろ面倒 – データベースだと管理が楽 – 1日分を1レコード、日付と内容をフィールドとする • 日付は自動 • さまざまな検索が可能 • データを追加できる:カロリー摂取量とか• 実際Blogはデータベースで作られている
10その他:いろいろ
• リスト系のデータ
– 蔵書やCD、コレクションの品々などのデータ• 家計簿
– 情報を加工し、計算する機能を利用する• 日々のさまざまなことを記録する何でもデー
タベース
• でも、データベースソフトが高かったら気軽に
使えない
11無料で使えるデータベースMySQL
• SQL(Structured Query Language)に対応した
無料データベースシステムを使う
• SQL
– データベースを操作するための言語 • プログラミング言語ではない• SQLの例(jushorokuというデータベースに1件
の住所情報を登録する場合)
– insert into jushoroku values (‘千葉商科大学’, ‘272’ , ‘8512’ , ‘千葉県市川市国府台’, ‘1-3-1’,
SQLは面倒か?
• 構文は決まっている
– insert into テーブル名 values データ
• ボタンの指示より言葉のほうが楽
• 実用上は、20種類程度の構文を覚えれば、
ほとんどのやりたいことはできる
MySQL
• PostgreSQLなどほかにもSQLに対応したオープンソ ースのデータベースシステムはある – オープンソース • プログラムが公開され、誰もがそれを改変したり、再配 布したりが許されているソフト • 開発が一私企業に占有されてない • もちろん無料• MySQL
– 唯一LinuxでもWindowsでもMacでも使える – 性能も高い 14研究室サーバにログインする
• Tera Term Proというソフトウェアを使用する
• 接続先
– www.cyaneum.org (202.244.37.57)• ログイン情報を入力
– ユーザ名: CUCと同じ(例、a940007) – 初期パスワード • 今日作った人:仮パスワード: hogeの後に、ユーザ名 からaを取ったもの – 例、a940007の人は、hoge940007 15Tera Term:ログイン画面
ログイン後
パスワード変更
• 仮パスワードを変更します(必須)
• passwdコマンドを使います
18 ① passwdと入力し、 [Enter]キーを押す。 ② 古いパスワードを入 力し、 [Enter]キーを押す。 ※表示されません。 ③ 新しいパスワードを 入力し、 [Enter]キーを押 す。※表示されません。 ④ 新しいパスワードを もう一度入力し、 [Enter] キーを押す。※表示され ません。 変更終了後、exitと入力し、[Enter]キーを押すMySQLモニタの起動
• MySQLサーバを操作する
• TeraTermで研究室サーバにログイン
• コマンドプロンプトで、mysql –u root -pと入力 • パスワードを入力( 20cuc08! )
• モニタが起動
• show databases; と入力し、[Enter]を押す • 二つのデータベースが表示される
– test – mysql
20
C:¥mysql¥bin>mysql -u root -p Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or ¥g. Your MySQL connection id is 5 to server version: 4.0.26-nt
Type 'help;' or '¥h' for help. Type '¥c' to clear the buffer. mysql> show databases;
+---+ | Database | +---+ | mysql | | test | +---+
2 rows in set (0.00 sec) mysql>
データベースを検索
• mysqlという名前のデータベースを使用する
– ユーザ名やパスワードを管理している – use mysql;と入力し、[Enter]• テーブルから、hostとuserという名前のフィー
ルドを検索する
– select host , user from user;と入力し、[Enter]
21
22
mysql> select host , user from user;
+---+---+
| host | user |
+---+---+
| localhost | |
| localhost | root |
+---+---+
2 rows in set (0.00 sec)
mysql>
データベースからデータを削除
• %のユーザを削除
– delete from user where user= ’%’; と入力し[Enter] を押す
– ’’ はシングルクォーテーション2個(Shiftを押しな がら数字の7)(間にスペースなし)
• 確認
– select host , user from user;と入力し、[Enter]
• 終了
– quit と入力し、[Enter]
24
(リレーショナル)データベース
• データモデルがリレーショナルモデルであるデータベー ス – テーブル同士の関連付け(リレーションシップ) • いくつかのテーブルを一つのテーブルとして扱える • テーブル(表)にデータを格納 – フィールドとレコードで構成 – フィールド:データの項目を表す – レコード:データ1行分 • 主キーの必要性 – 特定のレコードを「識別」する25
テーブル
行
26
テーブルの構成
氏名 電話番号 住所 小林 ○○ 0552-AA-BBBB 甲府市□□1-7-11 是枝 △△ 0427-CC-DDDD神戸市○○区☆☆4-8-25 後藤 ×× 0975-EE-FFFF 大分市△△1-9-7 列名、またはフィールド名 表 ま た は テ ー ブ ル 列、またはフィールド 行 、 ま た は レ コ ー ド27 商品一覧 商品番号 商品名 単価 1 りんご 100 2 みかん 50 3 ぶどう 150 4 バナナ 120 5 メロン 500 売り上げ一覧 商品番号 商品名 単価 売上個数 売上金額 1 りんご 100 10 1000 3 ぶどう 150 20 3000 3 ぶどう 150 25 3750 5 メロン 500 5 2500 5 メロン 500 8 4000 受注明細 受注番号 明細番号 取引先名 商品名 単価 数量 金額 1 1 千葉商店 3 150 12 1800 1 2 千葉商店 4 120 35 4200 2 1 千葉病院 1 100 43 4300 2 2 千葉病院 2 50 20 1000 2 3 千葉病院 5 500 10 5000 3 1 千葉バス 4 120 5 600 テーブル テーブル テーブル データベース データベースの構造:テーブルの集合