IT初心者のための基本情報ではじめる データベース 入門 ~データベース分野 1
この連載は、これから IT の勉強をはじめる人を対象としたものです。 基本情報技術者試験の出題分野ごとに、仕組み、主要な用語、および過去問題を紹介します。 受験対策としてだけでなく、 IT の基礎知識を幅広く得るために、ぜひお読みください。
今回は、データベース 分野 その 1 として データベース全般 を取り上げます。
もくじ
データベース が必要な理由
データベースという言葉は、データ( data )の基地( base )という意味です。
データベースというアイディアは、第二次大戦後に米国の国防総省で誕生したと言われています。 データを一元管理する基地を作り、データの内容を最新の正しい状態に保ち、必要なときにすぐに利用できるようにすれば、軍事行動を円滑に進められます。 これが、データベースが必要な理由です。
現在では、様々なビジネスの現場で、データベースが活用されています。 データベースが必要な理由は、ビジネスの現場でも同じです。 データの内容を最新の正しい状態に保ち、必要なときにすぐに利用できるようにすることで、ビジネスを円滑に進めるのです。
データベースを実現するための道具として、コンピュータが使われます。 コンピュータが、データの基地になるのです。
データベース の仕組み
コンピュータでデータベースを実現するには、ハードウェアとしてサーバーマシン、大容量のハードディスク、ネットワークが必要であり、ソフトウェアとして、サーバー用 OS 、 DBMS ( Data Base Management System 、データべース管理システム)、データファイルが必要です。 これらの中で特に重要なのが DBMS です。
データベースの実体は、膨大なデータを格納したファイルですが、それをクライアントから直接読み書きされてしまうと、様々な問題が生じる恐れがあります。 たとえば、権限のないクライアントが勝手にデータを閲覧したり書き換えたり、複数のクライアントが同時に同じデータを更新して矛盾が生じてしまうことです。
このような問題を防ぐために、 DBMS は、クライアントの権限や、複数のクライアントの競合などを管理します。 データを操作する言語である SQL の命令を解釈して実行するのも、 DBMS の役割です(図 1 )。
データベースには、いくつかの方式がありますが、現在の主流は、関係データベース( relational database )です。 Oracle Database 、 SQL Server 、 DB2 、 MySQL などの代表的な DBMS 製品が、関係データベースを採用しています。
関係データベースの関係( relation )は、 2 次元の表を意味します。 関係データベースは、表にデータを格納するのです。
図 2 は、商品のデータを格納した「商品表」の例です。 データは、行単位に格納されます。 1 行のデータのまとまりをレコードと呼びます。 データを表形式で取り扱えるようにするのも、 DBMS の役割のひとつです。
商品 ID | 商品名 | 定価 |
---|---|---|
S0001 | りんご | 100 |
S0002 | バナナ | 150 |
S0003 | オレンジ | 200 |
レコードレコードレコード
データベース の主要な用語
基本情報技術者試験のシラバス(情報処理技術者試験における知識・技能の細目)に示されたデータベースの分野は、
- データベース方式
- データベース設計
- データ操作
- トランザクション処理
- データベース応用
という項目に分けられています。
以下は、それぞれの項目における主要な用語です。 赤色で示した用語は、後で紹介する過去問題で説明します。
- データベース方式
- 関係データベース、階層型データベース、網型データベース、オブジェクト指向データベース、 XML データベース
- データベース設計
- E-R 図、エンティティ、属性、リレーションシップ、カーディナリティ( 1 対 1 、 1 対多、多対多)、主キー、外部キー、第 1 正規化、第 2 正規化、第 3 正規化
- データ操作
- campaign データを操作する言語である SQL に関する項目です。 SQL に関しては、次回の連載で取り上げますので、今回は省略します。
- トランザクション処理
- トランザクション、同時実行制御(排他制御)、共有ロック、専有ロック、ロック粒度、デッドロック、ログファイル、ロールフォワード、ロールバック
- データベース応用
- ビッグデータ、データマイニング、構造化データ、半構造化データ、非構造化データ
データベース の過去問題
データベースの分野の過去問題を 3 問ほど紹介しましょう。
データベースの種類と特徴
最初は、データベースの種類と特徴に関する問題です。 選択肢ア、イ、ウ、エは、シラバスに示されたデータベース方式のいずれかを説明しています。 現在主流の DBMS 製品の多くは、関係データベースを採用していますが、他のデータベース方式も知っておきましょう。
関係データベースのデータ構造の説明として,適切なものはどれか。
- ア
- 親レコードと子レコードをポインタで結合する。
- イ
- タグを用いてデータの構造と意味を表す。
- ウ
- データと手続を一体化(カプセル化)してもつ。
- エ
- データを 2 次元の表によって表現する。
- 選択肢ア
- 階層型データベースの説明です。 階層型データベースでは、レコードを親子関係で連結した階層構造にします。
網型データベースも、レコードとレコードを連結しますが、両者の違いは、レコード間に親子関係があるものが階層型データベースであり、親子関係がなく任意にレコードを連結したものが網型データベースです。 - 選択肢イ
- XML データベースの説明です。 XML データベースは、タグを使ってデータに意味付けをして、さらにデータの構造も示します。
- 選択肢ウ
- オブジェクト指向データベースの説明です。 オブジェクトとは、データと処理(選択肢には「手続き」と示されています)をまとめたものです。 オブジェクト指向データベースでは、オブジェクトをデータベースに格納します。
- 選択肢エ
- 関係データベースの説明です。 既に説明しましたが、関係データベースは、 2 次元の表にデータを格納します。
この問題は、関係データベースの説明を選ぶものなので、選択肢エが正解です。
E-R 図に関する問題
次は、E-R 図に関する問題です。 E-R 図とは何か? という内容になっています。
E-R 図に関する記述のうち,適切なものはどれか。
- ア
- 関係データベースの表として実装することを前提に表現する。
- イ
- 管理の対象をエンティティ及びエンティティ間のリレーションシップとして表現する。
- ウ
- データの生成から消滅に至るデータ操作を表現する。
- エ
- リレーションシップは、業務上の手順を表現する。
E-R 図( Entity Relationship Diagram 、実体関連図)は、データベース設計でよく使われる図です。 E-R 図では、システム化の対象となる業務を、エンティティおよびエンティティ間のリレーションシップで表します。
したがって、正解は、選択肢イです。
たとえば、商品販売という業務では、
「商品 ID 」「商品名」「単価」
などのデータが単独で取り扱われることはありません。 「商品 ID 」「商品名」「単価」をまとめた「商品」として取り扱われます。
この「商品」のように、いくつかのデータをまとめたものをエンティティと呼び、エンティティにまとめられた個々のデータを「属性」と呼びます。
さらに、商品販売の業務では、「顧客」が「商品」を買う、のようにエンティティとエンティティが関連を持ちます。 この関連をリレーションシップと呼びます。
E-R 図は、その名前が示す通り、エンティティとリレーションシップを表す図です。
図 3 は、商品販売の業務の E-R 図の例です。
2 段に区切られた四角形でエンティティを表し、上段にエンティティの名前を記述し、下段に属性を記述します。
四角形をつなぐ線でリレーションシップを表し、線の両端にカーディナリティ(多重度)を記述します。
カーディナリティは、エンティティどうしの関連が、
- 1 対 1
- 1 対多
- 多対多
のいずれであるかを示すものです。 ここでは、矢印なしの側が 1 を、矢印ありの側が多を意味しています(他の表記方法を使う場合もあります)。
「顧客」エンティティと「売上」エンティティのカーディナリティは、 1 対多です。 1 人の顧客は、複数の売上に関連するからです。たとえば、田中さんという顧客が、 3 回の買い物をしたら、売上(売上伝票だと考えてください)が 3 つ(多数)になります。
「商品」エンティティと「売上」エンティティのカーディナリティも、 1 対多です。 1 つの商品も、複数の売上に関連するからです。 たとえば、リンゴという商品が、 5 回売れたら、売上が 5 つ(多数)になります。
1 対 1 は、「夫」と「妻」の関連のように、どちらからたどっても相手が 1 つだけになる場合です。
間に「売上」を入れずに、「顧客」と「商品」を直接つなぐと、多対多になります。 田中さんは、リンゴとバナナとミカンを買い、リンゴは、田中さんと鈴木さんと山田さんに売れる、のように、どちらからたどっても相手が多数になるからです。
E-R 図で設計されたデータベースを、関係データベースとして実装するときには、エンティティが表になり、エンティティの属性が表の列になります。
同時実行制御に関する問題
最後は、同時実行制御に関する問題です。
クライアントがデータベースに行う操作のまとまりをトランザクションと呼びます。 DBMS には、複数のクライアントのトランザクションの競合を管理する機能があり、これを同時実行制御(排他制御)と呼びます。
同時実行制御は、ロックによって実現されます。 これは、あるトランザクションの実行中に、他のトランザクションが同じデータを操作できないように鍵(ロック)をかけるイメージです。
問題文に示された資源とは、ロックの対象となるデータのことです。 ロックを獲得するとは、データにロックをかけるという意味です。
ロックの両立性に関する記述のうち,適切なものはどれか。
- ア
- トランザクション T1 が共有ロックを獲得している資源に対して,トランザクション T2 は共有ロックと専有ロックのどちらも獲得することができる。
- イ
- トランザクション T1 が共有ロックを獲得している資源に対して,トランザクション T2 は共有ロックを獲得することはできるが,専有ロックを獲得することはできない。
- ウ
- トランザクション T1 が専有ロックを獲得している資源に対して,トランザクション T2 は専有ロックと共有ロックのどちらも獲得することができる。
- エ
- トランザクション T1 が専有ロックを獲得している資源に対して,トランザクション T2 は専有ロックを獲得することはできるが,共有ロックを獲得することはできない。
データベースの操作は、
- 参照(データの検索)
- 更新(データの新規登録、書き換え、削除)
に大きく分けられます。 これに合わせて、ロックには、共有ロックと専有ロックがあります。
- 共有ロック
- データを参照する場合は、共有ロックをかけます。 共有ロックは、データを見ているだけなので、他のトランザクションも同じデータを見ること(共有ロックをかけること)ができます。
ただし、同じデータを更新すること(専有ロックをかけること)はできません。 - 専有ロック
- データを更新しているので、他のトランザクションは同じデータを見ること(共有ロックをかけること)も、更新すること(専有ロックをかけること)もできません。
したがって、正解は、選択肢イです。
今回は「データベース」その 1 として「データベース」が必要な理由、仕組み、主要な用語、および過去問題を紹介しました。
次回は、「データベース」その 2 として「 SQL 」の分野を取り上げます。
それでは、またお会いしましょう!
label 関連タグ免除試験を受けた 74.9% の方が、 科目A免除資格を得ています。
IT初心者のための アルゴリズムとデータ構造入門 ~ 基本情報ではじめるコンピュータ科学の基礎理論(4)
updateIT初心者のための 論理回路 入門 ~ 基本情報ではじめるコンピュータ科学の基礎理論(3)
updateIT初心者のための 2進数 入門 ~ 基本情報ではじめるコンピュータ科学の基礎理論(2)
updateIT初心者のための基本情報ではじめる ストラテジ 入門
updateIT初心者のための基本情報ではじめる サービスマネジメント 入門 ~マネジメント分野 2
updateIT初心者のための基本情報ではじめる プロジェクトマネジメント 入門 ~マネジメント分野 1
updateIT初心者のための基本情報ではじめる 開発技術 入門
updateIT初心者のための基本情報ではじめる 暗号化 入門 ~セキュリティ分野 2
updateIT初心者のための基本情報ではじめる セキュリティ 入門 ~セキュリティ分野 1
updateIT初心者のための基本情報ではじめる OSI基本参照モデル 入門 ~ネットワーク分野 2
update『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”
大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。
主な著作物
- 「プログラムはなぜ動くのか」(日経BP)
- 「コンピュータはなぜ動くのか」(日経BP)
- 「出るとこだけ! 基本情報技術者」 (翔泳社)
- 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
- 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数