Devsway

日々の記録とか記憶とか。

- テーブルは表のように表示されるが、”表”ではない。

関係(リレーショナル)したモデルであり、それに一番適した形として表で表現されている



  • 主キー

    そのテーブルの中でユニークになる値を持つ列。

    複数の列を組み合わせて主キーとする”複合主キー”もあります。(主キーが複数あるわけではありません)




  • 外部キー(FKとか記入されていることこも=foreign key)

    外部キーで引くことができる値。

    それによって外部キーのテーブル(親)で持っていない値を入力できなくする(制約をかける)




  • 正規化




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




  • カージナリティ

    関係性の数のことです。




  • 多対多?

    どういうパターンでしょう?

    たとえば「学生」と「授業」を関連づけることきに

    学生は複数の授業をとることができ、

    授業は複数の学生に教えるものです




しかしこの関係のまま設計するのは好ましくありません。

両者が共通するキーを持っていないからです。

学生コードは主キーですが、複数の授業を受けている場合、授業テーブルに複数の同一学生コードがあることになります。

逆もしかり。


そんなときは

関連実態で間にワンクッション挟みます

これを関連実態といいます。

だから関連実態は本当に実態というよりも「表」って感じになるね。紐付け表。




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


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



  • SQLの中でもJOINは高コストです。多用するとSQLの速度が悪化します。

  • SQLの実行方法はDBMSが自動的にきめます。クライアントが指定するのはなにを取って欲しいだけでです。

    手続きの方法までは指定しません(非手続き型言語)


パフォーマンスで重要な要素が

– インデックス



– 統計情報

です!


インデックス


統計情報

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


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


苦手なデータ構造がある->ノード型のやつ。

NoSqlなどはこれに強い。(制約とのトレードオフ)




カテゴリー

オレオレIT用語辞典