データベースの基本事項を網羅的に理解します。内容とレベルは,ほぼ初級シスアド試験と同じです。
コード,ファイル(表,テーブル),レコード(行),項目(列,属性),正規化,ユニークキー(主キー),E-R図,エンティティ,リレーションシップ,木構造,網構造,関係モデル(RDB,リレーショナルデータベース),機密保護,インデクス,排他制御,同時更新,一貫性(インテグリティ),バックアップ,リカバリー,ジャーナルファイル,ロールフォワード,ロールバック
★ 参考動画:メディアリンク「ビジネスパーソンIT道場」
簡単な例(例題1)により,ファイルに入れるべき内容を検討します。
当社では,売上が発生するたびに売上伝票が起票して,コンピュータに入力され,売上ファイルとして蓄積されます。毎月末になると,売上ファイルから請求書を出力して得意先に請求します。このときの売上ファイルのデザインを設計することを例にします。
これらの結果,年月日,得意先コード,得意先名,商品コード,商品名,商品区分コード,商品区分名,数量,単価の項目を売上ファイルとして持つことになります。それをここでは次のように表記します。
売上ファイル=
+得意先コード+得意先名
+商品コード+商品名
+商品区分コード+商品区分名
+数量+単価
売上ファイルのデザインは下表のようになります。

これらは,いろいろな用語で呼ばれています。
一般的用語として ファイル レコード 項目 RDBでの用語) 表 行 列 その他 テーブル レコード フィールド,属性
初級シスアド等の過去問題→データベース一般
実際には,売上ファイルを単一のファイルとして持つのでなく,得意先マスタファイル,商品マスタファイル,商品区分マスタファイルそして売上ファイルのように分解して持つのです。
このように分解することを正規化といいます。正規化することにより,多くの利点があります。
正規化は,一般的には第3正規化まで行います。
主キーとは,ユニークキーともいいます。得意先マスタファイルの得意先コードのように,その項目が決まれば他の項目が決まる項目のことです。マスタファイルは主キーを持ち,主キーが同じ値を持つレコードは存在しないことになります。
商品と得意先により販売単価が決まるというような場合には,商品コード+得意先コード(このように複数の項目をあわせたものを複合項目といいます)が主キーになることもあります。
初級シスアド等の過去問題→データの正規化
エンティティ(Entity)とは,システム化対象業務において管理すべき実体で,「得意先」「商品」「商品区分」「売上」などです。リレーションシップ(Relationship)とは,エンティティ間の関連のことです。そしてエンティティとリレーションシップを図式化したものをE-R図といいます。

エンティティ商品とエンティティ商品区分の間には,商品が商品区分に「属する」というリレーションシップがあります。エンティティは長方形,リレーションシップはひし形で表示します(リレーションシップのひし形を省略して矢印をつけた矢線で表示する図法もあります)。そして,「すべての商品は,それぞれ唯一の商品区分に属する」し,「すべての商品区分は,いくつかの商品を持つ」という関連を,1:Nの対応といいます。また,1のほうを親,Nのほうを子として,親子の関連があるということもあります。
対応は1:N以外にも,部と部長のような1;1,所属と資格のようなM:Nの対応もあります。なお,Nではなく*で表示することもあります。
初級シスアド等の過去問題→ERD
正規化やE-R図の詳しい説明は,本シリーズの「データの正規化(db-seikika)」,「E-R図(db-ermodel)」を参照してください。
データベースとは,データの持ち方であり,それを管理する仕組みです。それをDBMS(データベース管理システム)といいます。


データベースに蓄えられているデータのなかには,特定の人以外には秘密にするべきデータもあります。通常のファイルでもファイル単位にユーザIDやパスワードにより,
読み書き両方ができる
読むことはできるが書くこと(更新)はできない
読み書き両方ともできない
に分けてアクセス制御することができます。
さらにデータベースでは,DBMSが独自に
列(項目)単位,行(レコード)単位でのアクセス制御できる
アクセス資格を多様なグループ分けにして指定できる
など,きめの細かい機密保護ができるようになっています。
過去問題:「ファイルへのアクセス管理」(
file-access-kanri)
データベースでは,ファイルとファイルをキーにより結びつけたり,大量のレコードから条件に合致したレコードを取り出す処理が多く発生します。
それを効率的に行うためには,図書の巻末にある索引のような機能が求められます。それをインデクスといいます。

たとえば販売システムでは,売上データは各支店で発生するので,多数の人が同じデータベースである売上ファイルを更新することが発生します。このように複数のジョブで同時にデータベースを更新することを同時更新といい,その更新命令をトランザクションといいます。あるトランザクションが更新処理をしている間に他のトランザクションが発生すると,次のような問題が発生します。
在庫テーブルのある商品の在庫が200個であった。100個の入荷をAが入力し,それに続いて100個の出荷をBが入力したとする。正しい在庫は,200+100-100=200個になるはずですが,処理のタイミングにより,2や3のように誤った結果になる危険があります。

DBMSでは,このようなトラブルを回避するために排他制御の機能を持っています。上図(4)のように,一方(ここではA)が旧データをつかんだ瞬間に旧データに「ロック」をかけて,Aが処理している間にBの入力があったときは,ロックが解除するまで待たせ,Aの処理が完了したときにロックを解除して,Bの処理を開始します。このようにして,データを正しく管理することをインテグリティ(一貫性)の保持といいます。
ここまでは,同時更新だけを取り上げましたが,データの照会をしているときでも途中で更新されると不都合が生じる場合があります。それで,占有ロックと共有ロックに区分されます。
他の処理での 他の処理からのロック 更新・削除 照会 占有ロック 共有ロック 占有ロック 禁止 禁止 禁止 禁止 共有ロック 禁止 許可 禁止 許可
初級シスアド等の過去問題→排他制御
万一のトラブルによりデータの整合性を失ったとき,データベースを正しく回復する機能が必要になります。それには,バックアップとリカバリーを行います。
定期的に(それをチェックポイントといいます)に,データベース全体をバックアップファイルにコピーします。その間は,更新が行われるたびに,更新前と更新後の情報をジャーナルファイルに記録しておきます。
トラブルが発生したときには,リカバリー(回復)処理をします。それには,ロールフォワードとロールバックがあります。


過去問題:「バックアップとリカバリ」( backup-recovery)
次の文のうち,正しいものには〇印をつけ,誤りである文には×印をつけて誤りの個所を訂正しなさい。