本日より、2023年10月8日のデータベーススペシャリスト受験を目標に勉強したことを書き記していこうと思います。

デッドロック検出方法について

デッドロックを検出する方法は以下の2通りの方法がある

  • 待ちグラフ
  • 時間監視

待ちグラフ

互いの資源にロック要求を出すトランザクション間で、グラフに閉路が生じた場合にデッドロックを判定する方法。処理は複雑だが、デッドロックを直ちに検出することができる。

時間監視

ロック待ち時間が一定時間以上になった場合、待っているトランザクションを強制終了させる(タイムアウト)方式が一番シンプル。ほかにもトランザクションの開始時刻(時刻印)を使う方式もある。

カーソル操作SQLの構文について

社員表

社員番号氏名年齢

上記のテーブルに対してのカーソル操作

UPDATE 社員表
 SET 氏名 = '田中', 年齢 = '28'
 WHERE CURRENT OF カーソル名

ん?社員番号は使わないの?と思った方もいるかもしれません。

実はカーソルはPLSQL等のループ処理で使います。

そのため、一連の流れ(のイメージ)を書くと以下のようになります。

カーソルの宣言

DECLARE csr CURSOR FOR SELECT 社員番号 FROM 社員リスト

カーソルオープン

OPEN csr

データ取得処理

FETCH NEXT FROM csr INTO :社員番号

ループ処理

WHILE :FETCH_STATUS = 0
BEGIN
	UPDATE 社員表 SET :氏名='田中', :年齢='28'
	    WHERE CURRENT OF csr
	FETCH NEXT FROM csr INTO :社員番号
END

カーソルクローズ

CLOSE csr

のように書きます。…が上記を実行するとすべて28歳の田中さんになってしまうので、状況に合わせて書き換えましょう。

関数従属について

反射律

BがAの部分集合であれば、A→B が成立する

増加律

A→B であれば、同じCを加えた{A,C}→{B,C} が成立する

推移律

A→B かつ B→C であれば、A→C が成立する

合併律

A→B かつ A→C であれば、A→{B,C} が成立する

分解律

A→{B,C} であれば、A→B および A→C が成立する