北川 博之著「データベースシステム(オーム社)」を参考に,データベースシステムの知識をまとめます。
更新不整合とは
データベース設計の論理設計において,リレーショナルデータベーススキーマを導出した結果,リレーショナルデータベースとして好ましくない形となっていることがあります。このような形によって引き起こされ得るデータベース上の不整合を更新不整合と呼び,下記の三種類の不整合によって構成されます。
- 修正不整合
- 挿入不整合
- 削除不整合
それぞれの不整合の具体例は以下でみていきます。
例
下のような「営業」リレーションを考えます。ただし,主キーは商品番号と顧客番号の組とします。
商品番号 | 顧客番号 | 社員番号 | 販売価格 |
---|---|---|---|
$i1$ | $c1$ | $s1$ | $100$ |
$i1$ | $c2$ | $s2$ | $120$ |
$i2$ | $c1$ | $s1$ | $200$ |
$i2$ | $c2$ | $s2$ | $210$ |
$i3$ | $c1$ | $s1$ | $250$ |
$i3$ | $c2$ | $s2$ | $250$ |
$i4$ | $c1$ | $s1$ | $150$ |
顧客番号が決まれば社員番号も決まる関係にあるため,ある顧客に対する社員番号が変更になる場合に該当する複数行の更新を忘れずに行う必要があります。仮に忘れてしまった場合に生じる不整合を修正不整合と呼びます。
ある新しい顧客に対する社員番号を割り当てたとき,具体的な商品番号と販売価格が定まらない限り,主キー制約により営業リレーションに挿入することができなくなります。このような不整合を挿入不整合と呼びます。
ある顧客が唯一購入している商品がキャンセルされた場合,該当するタプルを削除すると顧客番号と社員番号の組の情報が消失してしまいます。このような不整合を削除不整合と呼びます。
コメント