投稿数 585
公開から 2940

DB設計入門_ 1


Categories: database

- テーブルは表のように表示されるが、“表”ではない。 関係(リレーショナル)したモデルであり、それに一番適した形として表で表現されている

  • 主キー そのテーブルの中でユニークになる値を持つ列。 複数の列を組み合わせて主キーとする”複合主キー”もあります。(主キーが複数あるわけではありません)
  • 外部キー(FKとか記入されていることこも=foreign key) 外部キーで引くことができる値。 それによって外部キーのテーブル(親)で持っていない値を入力できなくする(制約をかける)
  • 正規化

テーブルの関係性について

  • カージナリティ 関係性の数のことです。
  • 多対多? どういうパターンでしょう? たとえば「学生」と「授業」を関連づけることきに 学生は複数の授業をとることができ、 授業は複数の学生に教えるものです

しかしこの関係のまま設計するのは好ましくありません。 両者が共通するキーを持っていないからです。 学生コードは主キーですが、複数の授業を受けている場合、授業テーブルに複数の同一学生コードがあることになります。 逆もしかり。

そんなときは

関連実態で間にワンクッション挟みます これを関連実態といいます。 だから関連実態は本当に実態というよりも「表」って感じになるね。紐付け表。


こっから先には物理層(DB内部)

パフォーマンスについて 正規化の副作用

  • SQLの中でもJOINは高コストです。多用するとSQLの速度が悪化します。
  • SQLの実行方法はDBMSが自動的にきめます。クライアントが指定するのはなにを取って欲しいだけでです。 手続きの方法までは指定しません(非手続き型言語)

パフォーマンスで重要な要素が - インデックス と - 統計情報 です!

インデックス
統計情報

これをもとにオプティマイザが最適な手続きを作り、実際にDBとやりとりします。

リレーショナルデータベースの弱点

苦手なデータ構造がある->ノード型のやつ。 NoSqlなどはこれに強い。(制約とのトレードオフ)