4.研修 リレーショナルデータベース基礎
この章ではリレーショナルデータベースについて学びましょう。
概要
- リレーショナルデータベースとは:「データベース」というカテゴリのソフトウェアの一種。略してRDB(アールデービー)
- データベースとは、:データをディスクに登録し、データを検索できるためのソフトウェア。略してDB(デービー)
(DBはデータを読み書きする箱)
DBならではの機能
単なるFile I/Oではない。
- write失敗時のリカバリ
- write/read が高速
- 複数人の同時writeの制御 などなど。
いろいろなRDB製品
いろいろあるよ。製品ごとにコマンドや考え方の差異があるので、全てを知り尽くすのは無理。
製品名 | 販売元 | 備考 |
---|---|---|
Oracle Database | Oracle | 世界で最も有名なRDB。業務システムで使うRDBは大半がこれ。 |
SQL Server | Microsoft | サーバがWindows Serverのときは、こっちを使うことが多い |
DB2 | IBM | マニュアルが読みにくくて困る |
MySQL | オープンソース | サービス/ゲーム系で大人気のRDB。 |
PostgreSQL | オープンソース | インターンで使うRDB。 |
H2 | オープンソース | Javaで書かれたRDB。 |
write/readするための専用言語
RDBからデータを読み書きするための専用言語が SQL(Structured Query Language)(エスキューエル)。直訳すると、「構造化された(データベースへの)お問い合わせ用言語」。なぜ「構造化された」とつくのかは知らない。構造化されてない言語ってあるのか?
3つのwriteと1つのread
種類 | 説明 | 使用するSQL文 |
---|---|---|
Create | 新しいデータを登録する | INSERT文 |
Update | すでにあるデータを変更する | UPDATE文 |
Delete | すでにあるデータを削除する | DELETE文 |
Read | データを検索する | SELECT文 |
これら4種類の操作を、頭文字をとってCRUD(クラッド)という。CRUDという用語はDBに限らず、どこでも出てくる。お客様の要望をCRUDに帰着させるのがシステム開発の基本。
(実はwriteは3つあった!)
RDBを学ぶとは
学ぶ or 現場でやらせてもらえる順に。。。
- SQLを学ぶ
- 高速に動作するSQLが書けるようになる(SQLレベルのパフォーマンスチューニング)
- RDB製品に付属するプログラム言語(ストアドプロシージャ)
- データベース設計
- データベースサーバの見積もりやRDB自体の設定(ハードレベルのパフォーマンスチューニング)
このインターンでは、1. SQLを学ぶのみを扱う
SQLのお仕事
SQLが書けるとこんなお仕事ができる
- SQLを利用したプログラミング。JavaからSQL実行とか
- お客様からのデータ抽出依頼。例:客「去年の1月度の売上データが欲しいんや!」。お客様の全ての要望を満たす画面機能があることは稀。画面がなければ、SQLで解決や!
- データパッチ。例:PG「プログラムにバグがあり、全ての売上金額が一桁少なく登録されてます!!」-> SQL or die
データベースの構造
- RDBは複数のテーブルからなる
- テーブルはデータの管理単位(例:従業員データを管理するテーブル)
- テーブルは複数のカラムからなる
- カラムはデータ項目(例:従業員番号カラム・従業員名カラム)
- Java のクラスとフィールドの関係と似てる
商蔵のデータベース設計
- /home/developer/商蔵/03.外部設計/外部設計_ER図.pdf
- /home/developer/商蔵/03.外部設計/外部設計_テーブル定義書.pdf
課題
次項より、実際にお客様からお問い合わせがきた体で、問題が記載されています。回答も合わせて記載されていますので、全て自分の手で書いて実行してみてください。
課題の提出方法
作成したSQLはソースコードの tutorial/sql フォルダに「課題番号.sql」というファイル名でファイルを作ってコミットしてください。(例:課題1001 -> 1001.sql)
禁止事項
- 回答をコピペして実行してはいけない。手で書くこと
- 回答を見ずに、考えてSQLを書こうとしてはいけない。回答を写経して、「こんなものなのか」と思ってもらうだけでOK。
課題の実行方法
STSを起動する
Database Developmentパースペクティブを開く
Database Connections -> PostgreSQL(人によってラベル文言が違う)を右クリックし、「Open SQL Scrapbook」を選択
- スクラップブックファイルが開くので、接続先DBを選択(DBの種類はPostgreSQL_8.xを選択)
- テキストエディタ部にSQL文を書く
- テキストエディタを右クリック->Execute AllでSQL実行
- 実行結果は、SQL Resultsビューに表示される。
- スクラップブックを保存(Ctrl+S)すると、ダイアログが開くので、tutorial/sql フォルダを選択し、「課題番号 + .sql」のファイル名で保存