DBスペシャリスト勉強_その1

2023/09/18に公開
概念データモデルとは

ER図はこれを表すためのもの。

RPOとはRTOとは

RPO: recovery point objective
→ 目標復旧時点: 復旧しないといけないバックアップファイルの古さ(障害前日なのか、障害1分前なのかetc)
RTO: recovery time objective
→ 目標復旧時間: ダウンを許容できる時間
https://techtarget.itmedia.co.jp/tt/news/1901/15/news08.html

バッファヒット率とは
見積もりシステム?
テーブルでの行の挿入で予約された空き領域が使われない??

行の挿入順
RDBMSの仕様

データベースを構成するファイル3つ

そもそもデータベースには、「データ・ファイル」「ログ・ファイル」「コントロール・ファイル(ルート・ファイル)」の3つが存在している。

  • データファイル
    → レコードやインデックスを実際に格納するファイルでDBの実体となるファイル
  • ログファイル
    → データの削除や更新といった、ユーザーが実際にDBに行った動作を格納するファイル
    → システムがダウンしてもログファイルがあればDBを復元可能(そりゃそうか、実際に行った動作全部格納してるんだから)
    → でもそうなると確かにログファイル大きくなりすぎるから、更新とかどうしてるのか気になる
  • コントロールファイル
    → DBMSで管理してるファイルの情報が書いてあるファイル
    https://xtech.nikkei.com/it/article/COLUMN/20060113/227231/
外部キー制約

登録するカラムは他のTBLで登録されてるものに限定するもの

主キーの設定方法
レプリケーションにおける同期型と非同期型について
  • 同期型
    → メインのデータが変更されたら同じ一連の処理でレプリカの方のDBも変更が加えられる。
  • 非同期型
    → メインのデータ変更と、レプリカのデータ変更は別の処理で行われる。
そもそもレプリケーションは

障害時などにメインが死んでも大丈夫なようにあらかじめたくさん複製しておくこと

ログをディスクに出力とは?

そもそもディスクとは?
→ ハードマシン上の記憶装置?ストレージみたいなイメージ
ログ(SQLの実施履歴etc)をストレージに格納みたいなイメージ

試験問題に取り組む時のメモ

記述問題は問題文に記載があることがあるから、問題文をきちんと読むこと

SQL覚えるメモ
// 等しくない(!=)
<> 

// 主キーの設定(複数個も可能)
PRIMARY KEY(列名)

// triggerについて
CREATE
    [DEFINER = user]
    TRIGGER trigger_name
    trigger_time trigger_event
    ON tbl_name FOR EACH ROW
    [trigger_order]
    trigger_body

trigger_time: { BEFORE | AFTER }

trigger_event: { INSERT | UPDATE | DELETE }

trigger_order: { FOLLOWS | PRECEDES } other_trigger_name

// ex
CREATE
    [DEFINER = user]
    TRIGGER トリガー1
    BEFORE INSERT
    ON test FOR EACH ROW
    FOLLOWS
    trigger_body
    
// NULLを処理できる関数
COALESCE([カラム名], [設定したい値])

https://dev.mysql.com/doc/refman/8.0/ja/create-trigger.html
REFERENCING句というものはある
https://software.fujitsu.com/jp/manual/manualfiles/M100005/J2X17484/02Z200/J7484-00-03-23-00.html

  • トリガーtimeは before or after

  • PRIMARY KEYの時、列名の隣に登録すべきなのは?

  • 追加する列'適用開始日'が日付型であること(DATE)
  • 初期値として現在日付を持ってきていること
  • NULL値を許容しないこと
  • なぜ、PRIMARY KEY(商品コード、適用開始日)なのか?
  • 適用開始日はその性質上、主キーにはなり得ない?
主キーを設定する上での制約
  • 一意性制約
    主キーで絞れば、列におけるTBL内の他の行に同じデータがないという制約

  • 非ナル制約(NULLが認められない)

強エンティティとは?

→ エンティティ=TBL
→ 他のTBLの存在有無とは関係なしに存在できるTBLのこと

Discussion