#contents
*データベースとは [#mde6842b]
大量のデータを滞りなく管理するための仕組み。大量のデータを体系化し目的のデータを見つけやすくするための仕組み。
*用途 [#ob255052]
-データの共有~
会社の部署単位や大学の研究室単位ならExcelやWordでも事足りるが全社、~
学科や学部単位になるとExcelやWordがハングアップを起こしたり間違えて~
上書き保存してしまったりなど様々なトラブルが予想される。~
Excelには共有ブックという機能もあるがある程度以上のマクロや数式を用いているワークブックでは不向き。~
しかしデータベースを用いればこのようなことはなくなる。~
-大量のデータの処理~
Excelの最大行数は100万行以上(列は15000列以上)あるが~
並のパソコンであれば数万行を超えたあたりでまともに開けなくなる。~
また専用ブラウザのkakikomi.txtがなかなか開かず困ったという経験をもつ諸兄もいるかもしれない。~
しかしデータベースを用いればこのようなことはなくなる。
*データベースの種類 [#v307f06d]
**階層型 [#w6ef9ba0]
フォルダのツリー表示(マイコンピュータ→表示→エクスプローラーバー→フォルダ)やレジストリ(ファイル名を指定して実行→regedit)など。~
いわゆる木構造(アルゴリズム勉強しようね)です。階層が深くなると目的のデータを探すのが大変。
**ネットワーク型 [#pf649710]
網型とも言う。階層型では上から順番に辿っていくしかなかったがデータ同士が網目状につながっているため複数のルートからデータを探せる。
#ref(http://yaruo.jp/images/00776_tr.gif)
**リレーショナル型 [#z274b371]
表形式。この表はテーブルと呼ばれる。SQL文による柔軟なデータの処理が可能。~
複数のテーブルを作りそれらを相互に連携(リレーション)させて1つのデータベースを構築する。~
現在、最も一般的に使われている型。RDBMSという専用のソフトによって構築・運用される。~
理論の背景には集合論・群論・述語論理がある。
|vipperid|vippername|
|1|ブーン|
|2|vipper|
|3|(^ω^)|
***RDBMSを利用したアプリケーション [#s811e8cd]
データベースの運用をRDBMSが行いアプリケーション側はSQLを送信してデータの処理を要求する。~
SQLを受け取ったRDBMSはテーブルからデータを取り出しアプリケーション側へ送信する。~
大規模なものはクライアント/サーバ方式で開発されアプリケーションはクライアント側で稼動しRDBMSが
~
稼動しているデータベースサーバと通信を行いデータの処理が行われる。~
RDBMSが提供している機能はその気になればアプリケーションにも実装できるが~
複数人が同時に操作した場合の対応、大量のデータの処理方法や実行速度、データのバックアップなど~
克服すべき課題は多くそれはプログラマにとってとても大きな負担になる。~
また大量のデータを管理するときにはいつも付いて回る問題でもある。~
そこでこのような部分を共通化してRDBMSとしてアプリケーションから~
独立させることにより信頼性が高まりデータの処理の効率も上がる。
***Microsoft Access [#d9855846]

**オブジェクト指向型 [#gfa6f62f]
未来派データベース!
**分散型 [#ud54b7d8]
あちらこちらに散らばっている様々なデータベースをネットワークを介して一つのデータベースとして使えるようにする。~
構築・運用が頓雑になるものの障害時のリスクや負荷を分散させることができる。~
データベース同士の型の違いやハードウェア構成・OSの違いなどを利用者側に~
意識させないように様々な工夫を凝らさねばならない。これを透過性という。~
現在ではリレーショナル型を基本として異なるRDBMS間でも相互に利用できるように[[ODBC:http://e-words.jp/w/ODBC.html]]や[[JDBC:http://e-words.jp/w/JDBC.html]]といった手段が用意されている。~

*設計 [#q81dc609]
概念設計と論理設計については例を示す。
**概念設計 [#v1c1c2e6]
いったいどのような目的でデータベースを作るのか?何のデータを管理するのか?をハッキリさせる。~
今回は図書館業務をシステム化するにあたって図書管理データベースを構築するという場面を想定する。
- 図書館業務の簡単な流れ~
1.客から書籍Aを"借りたい"と問い合わせを受けた~
2.あるかどうか書庫へ確かめに行く~
3.返答「扱っていない・貸し出し中・貸し出し可能である」~
4.貸し出し中であればいつ貸し出せるのかを示す。~
貸し出し可能であれば貸し出し手続きに入る。~
-もう少し詳しく~
http://u8.getuploader.com/vipprog/download/790/%E5%90%8D%E7%A7%B0%E6%9C%AA%E5%AE%9A-2.jpg~

**論理設計 [#ic60bd3f]
どの型のデータベースで構築するのかを決めてそれに応じた設計を行う。
**物理設計 [#e2396060]
論理設計に基づき実際に構築する。

*正規化 [#dd8fbd37]
リレーショナル型においてテーブルの構造を最適化するための方法。最適化されたテーブルを正規形という。
**第1正規形 [#g6f5061f]
繰り返し項目の除去
**第2正規形 [#e568b97c]
関数従属
**第3正規形 [#i3dea772]
推移関数従属
**第4正規形 [#jc9ac7b7]
**第5正規形 [#kb2f6dd8]
*ER図 [#g99ddaa5]
論理設計の際にこれや[[UML:http://vipprog.net/wiki/prog_lang_list.html#g2ac24c8]]で図を描く。
*トランザクション [#e7cafdc3]
複数の処理をひとまとめにして一つの処理とみなすこと

*関連項目 [#b33c8190]
-[[プログラミング言語/SQL]]

*参考サイト [#rdb2099f]
- [[Excelの“化け物”が限界に:http://unkar.org/r/dqnplus/1219690675]]~
-[[Excelを使う奴は無能:http://unkar.org/r/news/1219678201?renew=1294951537]]~
日産の事例
- [[基礎から始めるデータベース入門セミナー:http://www.oracle.com/technetwork/jp/articles/index-155234-ja.html]]~
天下のオラクル様のありがた~いご講義
- [[まったくの初心者もこれでバッチリ 12のキーワードから学ぶデータベース基本中のキホン(前編):CodeZine:http://codezine.jp/article/detail/3261]]~
[[まったくの初心者もこれでバッチリ 12のキーワードから学ぶデータベース基本中のキホン(後編):CodeZine:http://codezine.jp/article/detail/3293]]~
要会員登録
-[[特集:基礎から理解するデータベースのしくみ - 特集:基礎から理解するデータベースのしくみ:ITpro:http://itpro.nikkeibp.co.jp/article/COLUMN/20060127/228070/]]~
リレーショナル型データベースの内部構造について~
-[[連載:DBアタマアカデミー|gihyo.jp … 技術評論社:http://gihyo.jp/dev/serial/01/db-academy]]~
上と似たようなもんだけど若干方向性が異なっていてチューニングがテーマとなっている~
-[[リレーショナル・データベースの世界:http://www.geocities.co.jp/mickindex/database/idx_database.html]]~
-[[【レポート】組み込みデータベース - 身近な機器でもデータベースの導入が始まった | エンタープライズ | マイコミジャーナル:http://journal.mycom.co.jp/articles/2007/04/03/embeddedb/menu.html]]~
-[[組み込みDBプログラミングを知る---目次 - 組み込みDBプログラミングを知る:ITpro:http://itpro.nikkeibp.co.jp/article/COLUMN/20070312/264576/?ST=develop]]~
*参考書籍 [#bad1630a]
- [[データベースシステム概論:http://www.amazon.co.jp/exec/obidos/ASIN/4621042769/]]~
リレーショナル型データベースについてガチで勉強したい人へ~
- [[An Introduction to Database Systems (8th Edition):http://www.amazon.com/dp/0321197844]]~
データベースシステム概論の原書
- [[楽々ERDレッスン:http://www.amazon.co.jp/gp/product/4798110663]]~
テーブルの設計の参考書
- [[基礎からのデータベース設計 第2版:http://www.amazon.co.jp/dp/4797340029/]]~
初心者向け、ぶっちゃけ最初はこれとSQLの入門書でおk~
あとは使うRDBMSに合わせて参考書なりリファレンスなりクックブックなり買えばいいと思う