<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>トランザクション | 基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</title>
	<atom:link href="https://fenavi.seplus.jp/tag/%e3%83%88%e3%83%a9%e3%83%b3%e3%82%b6%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3/feed/" rel="self" type="application/rss+xml" />
	<link>https://fenavi.seplus.jp</link>
	<description>基本情報技術者試験を学習する人のためにつくられた専門メディア。250本以上の記事を掲載し、勉強方法や各分野のポイント、過去問解説など、試験に役立つ情報を発信。試験対策書籍を執筆する著者が、はじめて学ぶ人でもわかりやすく解説します。（2023年度からの新制度に対応済み）</description>
	<lastBuildDate>Tue, 27 Sep 2022 02:33:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>IT初心者のための基本情報ではじめる データベース 入門 ～データベース分野 1</title>
		<link>https://fenavi.seplus.jp/learn_tech/db4beginners/</link>
		
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
		<pubDate>Mon, 26 Sep 2022 23:30:58 +0000</pubDate>
				<category><![CDATA[データベース]]></category>
		<category><![CDATA[トランザクション]]></category>
		<category><![CDATA[午前問題]]></category>
		<category><![CDATA[科目 A]]></category>
		<guid isPermaLink="false">/?post_type=learn_tech&#038;p=7238</guid>

					<description><![CDATA[<p>この連載は、これから IT の勉強をはじめる人を対象としたものです。 基本情報技術者試験の出題分野ごとに、仕組み、主要な用語、および過去問題を紹介します。 受験対策としてだけでなく、 IT の基礎知識を幅広く得るために、 [&#8230;]</p>
<p>The post <a href="https://fenavi.seplus.jp/learn_tech/db4beginners/">IT初心者のための基本情報ではじめる データベース 入門 ～データベース分野 1</a> first appeared on <a href="https://fenavi.seplus.jp">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>この連載は、これから IT の勉強をはじめる人を対象としたものです。 基本情報技術者試験の出題分野ごとに、仕組み、主要な用語、および過去問題を紹介します。 受験対策としてだけでなく、 IT の基礎知識を幅広く得るために、ぜひお読みください。 </p>
<p>今回は、<span class="bold">データベース</span> 分野 その 1 として <span class="bold">データベース全般</span> を取り上げます。 </p>
<style>dl.inline dd{margin-left:2em;}.card-panel{box-shadow:0 4px 16px rgba(0,0,0,0.02),0 20px 46px rgba(0,0,0,0.08);}table{font-size:.85em;}th,td{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12);}tbody>tr{border:.4em #2196f3 solid}.comment{background:#2196f3;color:white;padding:.25em .5em;position:absolute;right:0;}.up{top:11em}.middle{top:15em}.down{top:19em}@media screen and (max-width:600px){dl:not(.inline)>dd{margin-left:1em}.comment{right:-1em;}.up{top:11em}.middle{top:15.5em}.down{top:19.5em}}</style>
<h2>データベース が必要な理由</h2>
<p>データベースという言葉は、<span class="u">データ（ data ）の基地（ base ）という意味</span>です。 </p>
<p>データベースというアイディアは、第二次大戦後に米国の国防総省で誕生したと言われています。 データを一元管理する基地を作り、データの内容を最新の正しい状態に保ち、必要なときにすぐに利用できるようにすれば、軍事行動を円滑に進められます。 これが、データベースが必要な理由です。 </p>
<p>&nbsp;</p>
<p>現在では、様々なビジネスの現場で、データベースが活用されています。 データベースが必要な理由は、ビジネスの現場でも同じです。 データの内容を最新の正しい状態に保ち、必要なときにすぐに利用できるようにすることで、ビジネスを円滑に進めるのです。 </p>
<p>データベースを実現するための道具として、コンピュータが使われます。 コンピュータが、データの基地になるのです。 </p>
<h2>データベース の仕組み</h2>
<p>コンピュータでデータベースを実現するには、ハードウェアとしてサーバーマシン、大容量のハードディスク、ネットワークが必要であり、ソフトウェアとして、サーバー用 OS 、 DBMS （ Data Base Management System 、データべース管理システム）、データファイルが必要です。 これらの中で特に重要なのが <span class="bold">DBMS</span> です。 </p>
<p>データベースの実体は、膨大なデータを格納したファイルですが、それをクライアントから直接読み書きされてしまうと、様々な問題が生じる恐れがあります。 たとえば、権限のないクライアントが勝手にデータを閲覧したり書き換えたり、複数のクライアントが同時に同じデータを更新して矛盾が生じてしまうことです。 </p>
<p>このような問題を防ぐために、 DBMS は、クライアントの権限や、複数のクライアントの競合などを管理します。 <span class="u">データを操作する言語である <span class="bold">SQL</span> の命令を解釈して実行</span>するのも、 DBMS の役割です（図 1 ）。 </p>
<figure><figcaption>図 1　DBMS がデータベースを管理する</figcaption><img decoding="async" class="materialboxed z-depth-5 responsive-width" src="/wordpress/wp-content/uploads/2022/09/image_database.jpg" loading="lazy"><br />
</figure>
<p>データベースには、いくつかの方式がありますが、現在の主流は、<span class="bold">関係データベース（ relational database ）</span>です。 Oracle Database 、 SQL Server 、 DB2 、 MySQL などの代表的な DBMS 製品が、関係データベースを採用しています。 </p>
<p>関係データベースの<span class="u">関係（ relation ）は、 2 次元の表を意味</span>します。 関係データベースは、表にデータを格納するのです。 </p>
<p>図 2 は、商品のデータを格納した「商品表」の例です。 データは、行単位に格納されます。 1 行のデータのまとまりを<span class="u">レコード</span>と呼びます。 データを表形式で取り扱えるようにするのも、 DBMS の役割のひとつです。 </p>
<figure style="position:relative;"><figcaption>図 2　関係データベースは、表にデータを格納する</figcaption><table class="responsive-width centered">
<caption>商品表</caption>
<thead class="blue lighten-5">
<tr style="border-top:1px solid rgba(0,0,0,.12);">
<th width="20%">商品 ID</th>
<th width="40%">商品名</th>
<th>定価</th>
</tr>
</thead>
<tbody>
<tr>
<td>S0001</td>
<td>りんご</td>
<td>100</td>
</tr>
<tr>
<td>S0002</td>
<td>バナナ</td>
<td>150</td>
</tr>
<tr>
<td>S0003</td>
<td>オレンジ</td>
<td>200</td>
</tr>
</tbody>
</table>
<p class="pad_00 mag_00"><span class="comment up">レコード</span><span class="comment middle">レコード</span><span class="comment down">レコード</span></p>
</figure>
<h2>データベース の主要な用語</h2>
<p>基本情報技術者試験のシラバス（情報処理技術者試験における知識・技能の細目）に示されたデータベースの分野は、</p>
<ul class="background c-round bold">
<li>データベース方式</li>
<li>データベース設計</li>
<li>データ操作</li>
<li>トランザクション処理</li>
<li>データベース応用</li>
</ul>
<p>という項目に分けられています。 </p>
<p>以下は、それぞれの項目における主要な用語です。 <span class="red-text">赤色で示した用語</span>は、後で紹介する過去問題で説明します。 </p>
<dl class="background c-round">
<dt class="chip">データベース方式</dt>
<dd><span class="red-text">関係データベース</span>、<span class="red-text">階層型データベース</span>、<span class="red-text">網型データベース</span>、<span class="red-text">オブジェクト指向データベース</span>、 <span class="red-text">XML データベース</span></dd>
<dt class="chip">データベース設計</dt>
<dd><span class="red-text">E-R 図</span>、<span class="red-text">エンティティ</span>、<span class="red-text">属性</span>、<span class="red-text">リレーションシップ</span>、<span class="red-text">カーディナリティ（ 1 対 1 、 1 対多、多対多）</span>、主キー、外部キー、第 1 正規化、第 2 正規化、第 3 正規化</dd>
<dt class="chip">データ操作</dt>
<dd class="blue-text"><i class="material-icons">campaign</i> データを操作する言語である SQL に関する項目です。 SQL に関しては、次回の連載で取り上げますので、今回は省略します。</dd>
<dt class="chip">トランザクション処理</dt>
<dd><span class="red-text">トランザクション</span>、<span class="red-text">同時実行制御（排他制御）</span>、<span class="red-text">共有ロック</span>、<span class="red-text">専有ロック</span>、ロック粒度、デッドロック、ログファイル、ロールフォワード、ロールバック</dd>
<dt class="chip">データベース応用</dt>
<dd>ビッグデータ、データマイニング、構造化データ、半構造化データ、非構造化データ</dd>
</dl>
<h2>データベース の過去問題</h2>
<p>データベースの分野の過去問題を 3 問ほど紹介しましょう。 </p>
<h3>データベースの種類と特徴</h3>
<p>最初は、データベースの種類と特徴に関する問題です。 選択肢ア、イ、ウ、エは、シラバスに示されたデータベース方式のいずれかを説明しています。 現在主流の DBMS 製品の多くは、関係データベースを採用していますが、他のデータベース方式も知っておきましょう。 </p>
<div class="card-panel mag_h40">
<span class="bold">問 29</span>　平成 25 年度 秋期</p>
<p>関係データベースのデータ構造の説明として，適切なものはどれか。 </p>
<dl class="inline">
<dt>ア</dt>
<dd>親レコードと子レコードをポインタで結合する。</dd>
<dt>イ</dt>
<dd>タグを用いてデータの構造と意味を表す。</dd>
<dt>ウ</dt>
<dd>データと手続を一体化（カプセル化）してもつ。</dd>
<dt>エ</dt>
<dd>データを 2 次元の表によって表現する。</dd>
</dl>
</div>
<dl class="background c-round">
<dt>選択肢ア</dt>
<dd><span class="u">階層型データベース</span>の説明です。 階層型データベースでは、レコードを親子関係で連結した階層構造にします。 <br /><span class="u">網型データベース</span>も、レコードとレコードを連結しますが、両者の違いは、レコード間に親子関係があるものが階層型データベースであり、親子関係がなく任意にレコードを連結したものが網型データベースです。</dd>
<dt>選択肢イ</dt>
<dd><span class="u">XML データベース</span>の説明です。 XML データベースは、タグを使ってデータに意味付けをして、さらにデータの構造も示します。</dd>
<dt>選択肢ウ</dt>
<dd><span class="u">オブジェクト指向データベース</span>の説明です。 オブジェクトとは、データと処理（選択肢には「手続き」と示されています）をまとめたものです。 オブジェクト指向データベースでは、オブジェクトをデータベースに格納します。</dd>
<dt>選択肢エ</dt>
<dd>関係データベースの説明です。 既に説明しましたが、関係データベースは、 2 次元の表にデータを格納します。</dd>
</dl>
<p>この問題は、関係データベースの説明を選ぶものなので、選択肢エが正解です。 </p>
<h3>E-R 図に関する問題</h3>
<p>次は、<span class="bold">E-R 図</span>に関する問題です。 E-R 図とは何か？ という内容になっています。 </p>
<div class="card-panel mag_h40">
<span class="bold">問 26</span>　平成 28 年度 秋期</p>
<p>E-R 図に関する記述のうち，適切なものはどれか。 </p>
<dl class="inline">
<dt>ア</dt>
<dd>関係データベースの表として実装することを前提に表現する。</dd>
<dt>イ</dt>
<dd>管理の対象をエンティティ及びエンティティ間のリレーションシップとして表現する。</dd>
<dt>ウ</dt>
<dd>データの生成から消滅に至るデータ操作を表現する。</dd>
<dt>エ</dt>
<dd>リレーションシップは、業務上の手順を表現する。</dd>
</dl>
</div>
<p>E-R 図（ Entity Relationship Diagram 、実体関連図）は、データベース設計でよく使われる図です。 E-R 図では、システム化の対象となる業務を、エンティティおよびエンティティ間のリレーションシップで表します。 </p>
<p>したがって、正解は、選択肢イです。 </p>
<p>&nbsp;</p>
<p>たとえば、商品販売という業務では、<br />
「商品 ID 」「商品名」「単価」<br />
などのデータが単独で取り扱われることはありません。 「商品 ID 」「商品名」「単価」をまとめた「商品」として取り扱われます。 </p>
<p><span class="u">この「商品」のように、いくつかのデータをまとめたものを<span class="bold">エンティティ</span></span>と呼び、<span class="u">エンティティにまとめられた個々のデータを<span class="bold">「属性」</span>と呼びます。 </p>
<p>さらに、商品販売の業務では、<span class="u">「顧客」が「商品」を買う、のようにエンティティとエンティティが関連を持ちます</span>。 この関連を<span class="bold">リレーションシップ</span>と呼びます。 </p>
<p>E-R 図は、その名前が示す通り、<span class="u bold">エンティティとリレーションシップを表す図</span>です。 </p>
<p>&nbsp;</p>
<p>図 3 は、商品販売の業務の E-R 図の例です。 </p>
<figure><figcaption>図 3　商品販売の業務の E-R 図の例</figcaption><img decoding="async" class="materialboxed z-depth-5 responsive-width" src="/wordpress/wp-content/uploads/2022/09/entity_relationship.jpg" loading="lazy"><br />
</figure>
<p>2 段に区切られた四角形でエンティティを表し、上段にエンティティの名前を記述し、下段に属性を記述します。<br />
四角形をつなぐ線でリレーションシップを表し、線の両端に<span class="bold">カーディナリティ（多重度）</span>を記述します。 </p>
<p>カーディナリティは、エンティティどうしの関連が、</p>
<ul class="background c-round">
<li>1 対 1</li>
<li>1 対多</li>
<li>多対多</li>
</ul>
<p>のいずれであるかを示すものです。 ここでは、矢印なしの側が 1 を、矢印ありの側が多を意味しています（他の表記方法を使う場合もあります）。 </p>
<div class="divider mag_h30"></div>
<div class="chip">カーディナリティの解説</div>
<p>「顧客」エンティティと「売上」エンティティのカーディナリティは、 <span class="bold">1 対多</span>です。 <span class="u">1 人の顧客は、複数の売上に関連する</span>からです。たとえば、田中さんという顧客が、 3 回の買い物をしたら、売上（売上伝票だと考えてください）が 3 つ（多数）になります。</p>
<p>「商品」エンティティと「売上」エンティティのカーディナリティも、 1 対多です。 1 つの商品も、複数の売上に関連するからです。 たとえば、リンゴという商品が、 5 回売れたら、売上が 5 つ（多数）になります。</p>
<p><span class="u"><span class="bold">1 対 1</span> は、「夫」と「妻」の関連のように、どちらからたどっても相手が 1 つだけになる</span>場合です。</p>
<p><span class="u">間に「売上」を入れずに、「顧客」と「商品」を直接つなぐと、<span class="bold">多対多</span></span>になります。 田中さんは、リンゴとバナナとミカンを買い、リンゴは、田中さんと鈴木さんと山田さんに売れる、のように、どちらからたどっても相手が多数になるからです。</p>
<div class="divider mag_h30"></div>
<p>E-R 図で設計されたデータベースを、関係データベースとして実装するときには、<span class="u">エンティティが表</span>になり、<span class="u">エンティティの属性が表の列</span>になります。 </p>
<h3>同時実行制御に関する問題</h3>
<p>最後は、同時実行制御に関する問題です。 </p>
<p><span class="u">クライアントがデータベースに行う操作のまとまりを<span class="bold">トランザクション</span></span>と呼びます。 DBMS には、複数のクライアントのトランザクションの競合を管理する機能があり、これを<span class="u">同時実行制御（排他制御）</span>と呼びます。 </p>
<p>同時実行制御は、<span class="bold">ロック</span>によって実現されます。 これは、<span class="u">あるトランザクションの実行中に、他のトランザクションが同じデータを操作できないように鍵（ロック）をかけるイメージ</span>です。 </p>
<p>問題文に示された資源とは、ロックの対象となるデータのことです。 ロックを獲得するとは、データにロックをかけるという意味です。 </p>
<div class="card-panel mag_h40">
<span class="bold">問 29</span>　平成 27 年度 秋期</p>
<p>ロックの両立性に関する記述のうち，適切なものはどれか。 </p>
<dl class="inline">
<dt>ア</dt>
<dd>トランザクション T<sub>1</sub> が共有ロックを獲得している資源に対して，トランザクション T<sub>2</sub> は共有ロックと専有ロックのどちらも獲得することができる。</dd>
<dt>イ</dt>
<dd>トランザクション T<sub>1</sub> が共有ロックを獲得している資源に対して，トランザクション T<sub>2</sub> は共有ロックを獲得することはできるが，専有ロックを獲得することはできない。</dd>
<dt>ウ</dt>
<dd>トランザクション T<sub>1</sub> が専有ロックを獲得している資源に対して，トランザクション T<sub>2</sub> は専有ロックと共有ロックのどちらも獲得することができる。</dd>
<dt>エ</dt>
<dd>トランザクション T<sub>1</sub> が専有ロックを獲得している資源に対して，トランザクション T<sub>2</sub> は専有ロックを獲得することはできるが，共有ロックを獲得することはできない。</dd>
</dl>
</div>
<p>データベースの操作は、</p>
<ul class="background c-round bold">
<li>参照（データの検索）</li>
<li>更新（データの新規登録、書き換え、削除）</li>
</ul>
<p>に大きく分けられます。 これに合わせて、ロックには、<span class="bold">共有ロックと<span class="bold">専有ロック</span>があります。 </p>
<dl class="background c-round">
<dt class="bold">共有ロック</dt>
<dd>データを参照する場合は、共有ロックをかけます。 共有ロックは、データを見ているだけなので、他のトランザクションも同じデータを見ること（共有ロックをかけること）ができます。 <br />ただし、<span class="u">同じデータを更新すること（専有ロックをかけること）はできません</span>。</dd>
<dt class="bold">専有ロック</dt>
<dd>データを更新しているので、他のトランザクションは同じデータを見ること（共有ロックをかけること）も、更新すること（専有ロックをかけること）もできません。</dd>
</dl>
<p>したがって、正解は、選択肢イです。 </p>
<div class="divider mag_tp50 mag_bt30"></div>
<p>今回は「データベース」その 1 として「データベース」が必要な理由、仕組み、主要な用語、および過去問題を紹介しました。 </p>
<p>次回は、「データベース」その 2 として「 SQL 」の分野を取り上げます。 </p>
<p>それでは、またお会いしましょう！</p><p>The post <a href="https://fenavi.seplus.jp/learn_tech/db4beginners/">IT初心者のための基本情報ではじめる データベース 入門 ～データベース分野 1</a> first appeared on <a href="https://fenavi.seplus.jp">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>基本情報でわかる トランザクション</title>
		<link>https://fenavi.seplus.jp/mastering_tech/transaction/</link>
		
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
		<pubDate>Wed, 24 Feb 2021 04:40:44 +0000</pubDate>
				<category><![CDATA[データベース]]></category>
		<category><![CDATA[トランザクション]]></category>
		<category><![CDATA[午前問題と午後問題の違い]]></category>
		<guid isPermaLink="false">/?post_type=mastering_tech&#038;p=5157</guid>

					<description><![CDATA[<p>この連載では、基本情報技術者試験によく出題されるテクノロジー関連の用語を、午前問題と午後問題のセットを使って解説します。 午前問題で用語の意味や概念を知り、午後問題で技術の活用方法を知ってください。それによって、単なる丸 [&#8230;]</p>
<p>The post <a href="https://fenavi.seplus.jp/mastering_tech/transaction/">基本情報でわかる トランザクション</a> first appeared on <a href="https://fenavi.seplus.jp">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>この連載では、基本情報技術者試験によく出題されるテクノロジー関連の用語を、午前問題と午後問題のセットを使って解説します。</p>
<p>午前問題で用語の意味や概念を知り、午後問題で技術の活用方法を知ってください。それによって、単なる丸暗記では得られない明確さで、用語を理解できるようになります。</p>
<p>今回のテーマは、 <span class="bold">トランザクションにおける共有ロックと専有ロック</span> です。</p>
<style>dl.inline dd{margin-left:2em;}th{text-align:center;}</style>
<h2>トランザクションと共有ロック・専有ロックとは？</h2>
<p>データベースに対するひとまとまりの処理を <span class="bold">トラザクション</span> と呼びます。</p>
<p>多くの場合に、データベースは、複数のユーザーから利用されるサーバーになっているので、複数のトランザクションを同時に実行することがあります。もしも、同じデータを処理する複数のトランザクションを同時に実行するとどうなるでしょう。</p>
<p>あるトランザクションの処理が完了していない中途半端な状態のデータを、他のトランザクションが処理することになるので、データの内容に矛盾が生じてしまうかもしれません。そこで、データベースには、他のトランザクションに実行を待たせる機能が用意されていて、これを「ロック（ lock = 錠前）」と呼びます。</p>
<p>&nbsp;</p>
<p>ロックには、 <span class="bold">共有ロック</span> と <span class="bold">専有ロック</span> という種類があります。</p>
<ul class="background c-round">
<li>データを閲覧する（データの内容を変化させない）トランザクションは、共有ロックをかけてからデータを処理します。</li>
<li>データを更新する（データの内容を変化させる）トランザクションは、専有ロックをかけてからデータを処理します。</li>
</ul>
<p>あるトランザクションによって共有ロックがかけられたデータには、他のトランザクションが共有ロックをかけることができますが、専有ロックをかけることはできません。</p>
<p>これは、<span class="u">「誰かが見ているデータは、他の人が見ても構わないが、他の人が書き換えてはダメである」</span>ということです。複数のトランザクションにデータが共有されるので、共有ロックと呼ぶのです。</p>
<p>&nbsp;</p>
<p>あるトランザクションによって専有ロックがかけられたデータは、他のトランザクションが共有ロックをかけることも専有ロックをかけることもできません。</p>
<p>これは、<span class="u">「誰かが書き換え中のデータは、他の人が見ても書き換えてもダメである」</span>ということです。ひとつのトランザクションにデータが専有されるので、専有ロックと呼ぶのです。</p>
<h2>共有ロックと専有ロックに関する午前問題</h2>
<p>それでは、共有ロックと専有ロックに関する午前問題を解いてみましょう。以下に、問題を示します。</p>
<p>問題文の中にある「ロックの両立性」とは、「同時に両方のロックをかけられるかどうか」ということです。<br />
「ロックを獲得する」とは、「トラザクションが要求したロックが、データベースによって受け付けられる」ということです。<br />
「資源」とは、「処理の対象となるデータ」のことです。</p>
<div class="card-panel mag_h30">
問 29　平成 27 年度 秋期 午前</p>
<p>ロックの両立性に関する記述のうち，適切なものはどれか。</p>
<dl class="inline">
<dt>ア</dt>
<dd>トランザクション T<sub>1</sub> が共有ロックを獲得している資源に対して，トランザクション T<sub>2</sub> は共有ロックと専有ロックのどちらも獲得することができる。</dd>
<dt>イ</dt>
<dd>トランザクション T<sub>1</sub> が共有ロックを獲得している資源に対して，トランザクション T<sub>2</sub> は共有ロックを獲得することはできるが，専有ロックを獲得することはできない。</dd>
<dt>ウ</dt>
<dd>トランザクション T<sub>1</sub> が専有ロックを獲得している資源に対して，トランザクション T<sub>2</sub> は専有ロックと共有ロックのどちらも獲得することができる。</dd>
<dt>エ</dt>
<dd>トランザクション T<sub>1</sub> が専有ロックを獲得している資源に対して，トランザクション T<sub>2</sub> は専有ロックを獲得することはできるが、共有ロックを獲得することはできない。</dd>
</dl>
</div>
<p>トランザクション T<sub>1</sub> が共有ロックをかけている場合には、トランザクション T<sub>2</sub> は、共有ロックをかけられますが、専有ロックをかけられません。<br />
トランザクション T<sub>1</sub> が専有ロックをかけている場合は、トランザクション T<sub>2</sub> は、共有ロックも専有ロックもかけられません。</p>
<p>したがって、選択肢イが適切です。</p>
<p class="mag_tp20 mag_bt40"><span class="chip mag_rt05">解答</span>イ</p>
<h2>共有ロックと専有ロックに関する午後問題（ロックの必要性）</h2>
<p>今度は、共有ロックと専有ロックに関する午後問題です。以下に問題を示します。</p>
<p>この問題を通して、ロックの必要性や注意点を理解できます。設問ごとに区切って説明しましょう。なお、この問題では、「専有ロック」を「占有ロック」と表現しているので、これ以降では、「専有ロック」を「占有ロック」と呼びます。</p>
<div class="card-panel mag_h30">
問 3　平成 23 年度 特別 午後（一部抜粋）</p>
<p>　データベースのトランザクション管理に関する次の記述を読んで，設問 1 ～ 4 に答えよ。</p>
<div class="mag_lt10">　個人向けに，画材をインターネット販売する会社が運営する Web サイトがある。 この Web サイトが在庫管理に利用しているデータベースでは，絵の具の在庫数は色別に個々のデータとして管理されており，処理に応じて次の 3 種類のトランザクションが生成される。</p>
<dl class="inline">
<dt>(1)</dt>
<dd>1 回の商品注文に対して，一つの出荷トランザクションが生成される。</dd>
<dt>(2)</dt>
<dd>1 回の商品入荷に対して，一つの入荷トランザクションが生成される。</dd>
<dt>(3)</dt>
<dd>1 回の在庫照会に対して，一つの照会トランザクションが生成される。</dd>
</dl>
<p>　なお，一つのトランザクションで，複数の色の絵の具を処理することができる。
</p></div>
<p><span class="bold">設問 1</span></p>
<div class="mag_lt10">　ACID 特性に関する次の記述中<span class="blank"></span>に入れる正しい答えを，解答群の中から選べ。</p>
<p>　ACID 特性とは，データベースの一貫性を保証するために必要な特性で，原子性，一貫性，独立性，耐久性の四つがある。このうち，一貫性や独立性を保証するためにトランザクション管理では排他制御が必要となる。例えば，白絵の具の在庫数が 50 だった場合，表 1 に示すトランザクション T1 と T2 が同時に実行されたとき，排他制御を行わないと実行後の在庫数は 55 とならず，在庫数が<span class="blank">a</span>又は<span class="blank">b</span>となってしまう可能性がある。</p>
<p>　なお，各トランザクションは，図 1 の (1) ~ (3) の順で在庫数データを処理する。
</p></div>
<table class="mag_h30 responsive-width centered">
<caption>表 1 トランザクション T1，T2 の処理内容</caption>
<thead>
<tr>
<th>トランザクション</th>
<th>処理内容</th>
</thead>
<tbody>
<tr>
<td>出荷トランザクション T1</td>
<td>白絵の具 5 本の出荷</td>
</tr>
<tr>
<td>入荷トランザクション T2</td>
<td>白絵の具 10 本の入荷</td>
</tr>
</tbody>
</table>
<div class="row">
<div class="col m6 s12">
<ol class="background c-round">
トランザクション T1 の処理順序</p>
<li>白絵の具の在庫数データを読み込む。</li>
<li>白絵の具の在庫数データ = 白絵の具の在庫数データ &#8211; 5</li>
<li>白絵の具の在庫数データを書き込む。</li>
</ol>
</div>
<div class="col m6 s12">
<ol class="background c-round">
トランザクション T2 の処理順序</p>
<li>白絵の具の在庫数データを読み込む。</li>
<li>白絵の具の在庫数データ = 白絵の具の在庫数データ + 10</li>
<li>白絵の具の在庫数データを書き込む。</li>
</ol>
</div>
<p class="center grey-text">図 1 トランザクション T1, T2 の処理順序</p>
</div>
<p>解答群<br />
ア　40　　イ　45　　ウ　50　　<br class="hide-on-med-and-up">エ　60　　オ　65
</div>
<p>設問 1 は、「ロックが必要な理由を知っておきましょう」という問題です。</p>
<p>白絵の具の在庫数という同じデータを、トランザクション T1 とトランザクション T2 が同時に処理するとどうなるでしょう。</p>
<p>&nbsp;</p>
<p>もしも、トランザクション T1 の 3. の処理が行われる前に、トランザクション T2 の 1. の処理が行われたら、</p>
<ol class="background c-round">
<li>トランザクション T1 の 2. の処理（在庫数を &#8211; 5 する処理）が失われる</li>
<li>トランザクション T2 の 2. の処理（在庫数を + 10 する処理）だけが反映</li>
<li>在庫数は、もとの 50 を ＋ 10 した 60</li>
</ol>
<p>となります。</p>
<p>逆に、もしも、トランザクション T2 の 3. の処理が行われる前に、トランザクション T1 の 1. の処理が行われたら、</p>
<ol class="background c-round">
<li>トランザクション T2 の 2. の処理（在庫数を + 10 する処理）が失われる</li>
<li>トランザクション T1 の 2. の処理（在庫数を &#8211; 5 する処理）だけが反映</li>
<li>在庫数は、もとの 50 を &#8211; 5 した 45</li>
</ol>
<p>となります。</p>
<p>このような矛盾を生じさせないために、ロックが必要なのです。 45 または 60 になることがあるのですから、正解は選択肢イとエ（順不同）です。</p>
<h2>共有ロックと専有ロックに関する午後問題（ロックで生じる待ち状態）</h2>
<div class="card-panel mag_h30">
<span class="bold">設問 2</span></p>
<div class="mag_lt10">　入荷トランザクション及び出荷トランザクションを処理する場合は対象データを占有ロックし，照会トランザクションを処理する場合は共有ロックする。</p>
<p>　なお，このデータベースを管理する DBMS では，あるトランザクションが共有ロックしているデータを，ほかのトランザクションからロックする場合，共有ロックの要求は成功するが，占有ロックの要求は共有ロックが解除されるまで待ち状態となる。</p>
<p>　表 2 に示すトランザクション T3 〜 T6 を，図 2 に示すとおりに実行し，ロックを要求した場合，それぞれのトランザクションの状態について正しい説明を，解答群の中から選べ。
</p></div>
<table class="mag_h30 striped responsive-width centered">
<caption>表2 トランザクション T3 ~ T6 の処理内容</caption>
<thead>
<tr>
<th>トランザクション</th>
<th>処理内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>照会トランザクション T3</td>
<td>白絵の具の在庫数照会</td>
</tr>
<tr>
<td>入荷トランザクション T4</td>
<td>白絵の具 10 本の入荷</td>
</tr>
<tr>
<td>出荷トランザクション T5</td>
<td>白絵の具 5 本の出荷</td>
</tr>
<tr>
<td>照会トランザクション T6</td>
<td>白絵の具の在庫数照会</td>
</tr>
</tbody>
</table>
<figure class="mag_h30">
<img decoding="async" class="materialboxed z-depth-5 responsive-width" data-caption="図2　トランザクションT3～T6の実行例" src="/wordpress/wp-content/uploads/2021/02/q3_h23h_figure.jpg" loading="lazy" width="763" height="332"><figcaption>図 2　トランザクション T3 ～ T6 の実行例</figcaption></figure>
<p>解答群</p>
<dl class="inline">
<dt>ア</dt>
<dd>T4， T5， T6 とも待ち状態となる。</dd>
<dt>イ</dt>
<dd>T5， T6 とも待ち状態とならない。</dd>
<dt>ウ</dt>
<dd>T4， T5 は待ち状態となるが， T6 は待ち状態とならない。 </dd>
<dt>エ</dt>
<dd>T4 は待ち状態となるが， T5， T6 は待ち状態とならない。 </dd>
<dt>オ</dt>
<dd>T6 は待ち状態となるが， T4， T5 は待ち状態とならない。</dd>
</dl>
</div>
<p>設問 2 は、「ロックをかけると、他のトランザクションが待ち状態になる場合があることを知っておきましょう」という問題です。</p>
<p><span class="u">待ち状態になるかどうかは、共有ロックと占有ロックのどちらをかけたかで異なります。</span></p>
<ul class="background c-round">
<li>あるトランザクションが共有ロックをかけた場合には、他のトランザクションは共有ロックをかけるなら待たされませんが、占有ロックをかけるなら待たされます</li>
<li>あるトランザクションが占有ロックをかけた場合には、他のトランザクションは共有ロックでも占有ロックでも待たされます</li>
</ul>
<p>トランザクション T3, T4, T5, T6 は、どれも白絵の具の在庫数という同じデータを処理します。</p>
<p>T3 と T6 は照会（見るだけ）なので共有ロックをかけます。<br />
T4 と T5 は入荷と出荷（どちらも更新）なので占有ロックをかけます。</p>
<p>したがって、待ち状態になるかどうかは、以下のようになります。</p>
<figure class="mag_h30">
<img decoding="async" class="materialboxed z-depth-5 responsive-width" src="/wordpress/wp-content/uploads/2021/02/comment_q3.gif" loading="lazy" width="763" height="332"><br />
</figure>
<p>T3 が共有ロックをかけた後なので、占有ロックの T4 と T5 は待ち状態になりますが、共有ロックの T6 は待ち状態になりません。したがって、選択肢ウが正解です。</p>
<h2>共有ロックと専有ロックに関する午後問題（ロックの注意点その 1 ～ 未解放）</h2>
<div class="card-panel mag_h30">
<span class="bold">設問 3</span></p>
<div class="mag_lt10">　出荷トランザクション T7 の処理内容を表 3 に示す。次の記述中の<span class="blank"></span>に入れる正しい答えを，解答群の中から選べ。 なお，トランザクション T7 は、図 3 の 1 ~ 4 の順で在庫数データを処理する。
</div>
<table class="mag_h30 responsive-width centered">
<caption>表 3 トランザクション T7 の処理内容</caption>
<thead>
<tr>
<th>トランザクション</th>
<th>処理内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>出荷トランザクション T7</td>
<td>白絵の具 5 本と赤絵の具 3 本の出荷</td>
</tr>
</table>
<ol class="background c-round">
<span class="bold"><i class="material-icons">arrow_back</i>α</span></p>
<li>白絵の具の在庫数データをロックする。</li>
<li>白絵の具の在庫数データを読み込む。</li>
<p><span class="bold"><i class="material-icons">arrow_back</i>β</span></p>
<li>赤絵の具の在庫数データを読み込む。</li>
<p><span class="bold"><i class="material-icons">arrow_back</i>γ</span></p>
<li>白絵の具の在庫数データ = 白絵の具の在庫数データ &#8211; 5</li>
<li>白絵の具の在庫数データを書き込む。</li>
<p><span class="bold"><i class="material-icons">arrow_back</i>δ</span></p>
<li>赤絵の具の在庫数データ = 赤絵の具の在庫数データ &#8211; 3</li>
<li>赤絵の具の在庫数データを書き込む。</li>
<p><span class="bold"><i class="material-icons">arrow_back</i>ε</span></p>
<li>赤絵の具の在庫数データのロックを解除する。</li>
</ol>
<p class="grey-text center">図 3　ランザクション T7 の処理順序</p>
<div class="mag_lt10">
　データをロックしている時間を最も短くするためには， &#8220;赤絵の具の在庫数データをロックする。&#8221; を挿入すべき適切な位置は<span class="blank">c</span>で， &#8220;白絵の具の在庫数データのロックを解除する。&#8221; を挿入すべき適切な位置は<span class="blank">d</span>である。</p>
<p>　なお，ほかのトランザクションとのデッドロックの発生に対する考慮は不要とする。
</p></div>
<p>解答群</p>
<p>ア　α　　イ　β　　ウ　γ　　エ　δ　　オ　ε</dl>
</div>
<p>設問 3 は、<span class="bold">「ロックをかけると他のトランザクションが待たされる場合があるのだから、データの処理が完了したら、すぐにロックを解除しましょう」</span>という問題です。</p>
<p>赤絵の具の在庫データは、 3. で読み込んでいるので、その直前の β の位置でロックをかけるべきです。したがって、空欄 c の正解は、選択肢イです。</p>
<p>白絵の具の在庫データの処理は、 5. で完了しているので、その直後の δ の位置でロックを解除するべきです。したがって、空欄 d の正解は、選択肢エです。</p>
<h2>共有ロックと専有ロックに関する午後問題（ロックの注意点その 2 ～ デッドロック）</h2>
<div class="card-panel mag_h30">
<span class="bold">設問 4</span></p>
<div class="mag_lt10">　表4 に示すトランザクション T8 ～ T11 のうち，解答群の組合せの中から，同時に処理された場合にデッドロックが発生する可能性のある組合せを選べ。</p>
<p>　なお、トランザクション T8 〜 T11 では，各絵の具の在庫数データをどのような順番で処理するかは、分からないものとする。
</p></div>
<table class="striped mag_h30 responsive-width centered">
<caption>表 4　トランザクション T8 〜 T11 の処理内容</caption>
<thead>
<tr>
<th>トランザクション</th>
<th>処理内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>出荷トランザクション T8</td>
<td>白絵の具 5 本と赤絵の具 5 本の出荷</td>
</tr>
<tr>
<td>入荷トランザクション T9</td>
<td>赤絵の具 10 本と絵の具 10 本の入荷</td>
</tr>
<tr>
<td>出荷トランザクション T10</td>
<td>青絵の具 2 本と白絵の具 5 本の出荷</td>
</tr>
<tr>
<td>入荷トランザクション T11</td>
<td>青絵の具 10 本と黒絵の具 10 本の入荷</td>
</tr>
<tbody>
</table>
<p>解答群</p>
<p>ア　T8, T9　　<br class="hide-on-med-and-up">イ　T8, T9, T10　　<br class="hide-on-med-and-up">ウ　T9, T10, T11<br />
エ　T10, T11
</div>
<p>設問 4 は、「ロックをかける順序によっては、<span class="bold">デッドロック</span>になってしまう場合があるので、注意しましょう」という問題です。デッドロックとは、複数のトランザクションが、すべて待ち状態になり、処理が先に進めなくなってしまうことです。</p>
<p>&nbsp;</p>
<p>ロックと待ち状態に注目して、選択肢を見てみましょう。以下は、選択肢アの T8 と T9 を同時に実行した例です。 T8 と T9 の両方が待ち状態になることはないので、デッドロックは発生しません。</p>
<ol class="background c-round">
<li>T8 が白絵の具をロックする</li>
<li>T9 が赤絵の具をロックする</li>
<li>T8 が赤絵の具をロックしようとするが、 2. でロックされているので、待ち状態になる</li>
<li>T9 が青絵の具をロックする</li>
<li>T9 が赤絵の具のロックを解除する</li>
<li>T8 が赤絵の具をロックする</li>
</ol>
<p>以下は、選択肢イの T8, T9, T10 を同時に実行した例です。T8、T9、T10 が、すべて待ち状態になり、処理が先に進めなくなっています。これが、デッドロックです。したがって、選択肢イが正解です。説明が長くなるので、選択肢ウとエの例は示しませんが、どちらもデッドロックは発生しません。</p>
<ol class="background c-round">
<li>T8 が白絵の具をロックする</li>
<li>T9 が赤絵の具をロックする</li>
<li>T10 が青絵の具をロックする</li>
<li>T8 が赤絵の具をロックしようとするが、 2. でロックされているので、待ち状態になる</li>
<li>T9 が青絵の具をロックしようとするが、 3. でロックされているので、待ち状態になる</li>
<li>T10 が白絵の具をロックしようとするが、 1. でロックされているので、待ち状態になる</li>
</ol>
<p>&nbsp;</p>
<p><span class="chip mag_rt05">解答</span>設問 1　a &#8211; イ, b &#8211; エ（順不同）　設問 2　ウ　設問 3　c &#8211; イ, d &#8211; エ　設問 4　イ</p>
<div class="divider mag_h50"></div>
<p>いかがでしたか？</p>
<p>午前問題で共有ロックと専有ロックという言葉の意味がわかり、午後問題でロックの必要性や注意点などを理解できたでしょう。</p>
<p>この連載では、今後も、多くの受験者が苦手としている用語を取り上げて行きます。それでは、またお会いしましょう！</p><p>The post <a href="https://fenavi.seplus.jp/mastering_tech/transaction/">基本情報でわかる トランザクション</a> first appeared on <a href="https://fenavi.seplus.jp">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>「厳選5題」過去問と解説 &#124; 平成25年度 秋期 の過去問やるならこれをやれ</title>
		<link>https://fenavi.seplus.jp/kakomon-gensen/h25_autumn/</link>
		
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
		<pubDate>Mon, 05 Aug 2019 02:32:42 +0000</pubDate>
				<category><![CDATA[OSI参照モデル]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[トランザクション]]></category>
		<category><![CDATA[ポート番号]]></category>
		<category><![CDATA[午前問題]]></category>
		<category><![CDATA[過去問演習]]></category>
		<guid isPermaLink="false">/?post_type=kakomon-gensen&#038;p=1901</guid>

					<description><![CDATA[<p>ここでは、平成 25 年度 秋期 基本情報技術者試験の午前試験 の中から「やるべき問題」を 5 題に厳選し、ぶっちゃけた解説をさせていただきます。 やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習し [&#8230;]</p>
<p>The post <a href="https://fenavi.seplus.jp/kakomon-gensen/h25_autumn/">「厳選5題」過去問と解説 | 平成25年度 秋期 の過去問やるならこれをやれ</a> first appeared on <a href="https://fenavi.seplus.jp">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>ここでは、<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2013h25_2/2013h25a_fe_am_qs.pdf" rel="noopener" target="_blank">平成 25 年度 秋期 基本情報技術者試験の午前試験</a> の中から「やるべき問題」を 5 題に厳選し、ぶっちゃけた解説をさせていただきます。</p>
<p>やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習しないとできない問題）です。</p>
<style>h2 .chip{vertical-align:middle;background:#3f51b5;color:white;margin-right:.75em;}.chip i{font-size:2em!important;}table{font-size:.85em;}dl.inline dd{margin-left:2em;}table.border td{border:.1em solid #9e9e9e}</style>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_one</i></span>見かけは難しそうですが、実はとっても簡単な問題です</h2>
<div class="card-panel mag_h30">
問 31</p>
<p>&#8220;商品&#8221; 表に対して，更新 SQL 文を実行するトランザクションが，デッドロックの発生によって異常終了した。 異常終了後の &#8220;商品&#8221; 表はどれか。 ここで， &#8220;商品&#8221; 表に対する他のトランザクションは，参照は行うが更新はしないものとする。</p>
<table class="bordered mag_h30 responsive-width">
<caption>商品</caption>
<thead>
<tr>
<th>商品コード</th>
<th>商品名</th>
<th>販売単価</th>
</tr>
</thead>
<tbody>
<tr>
<td>A010</td>
<td>AAA</td>
<td>2,500</td>
</tr>
<tr>
<td>B020</td>
<td>BBB</td>
<td>1,000</td>
</tr>
<tr>
<td>C030</td>
<td>CCC</td>
<td>4,500</td>
</tr>
</tbody>
</table>
<p>〔更新 SQL 文〕</p>
<p><code class="language-sql">DELETE FROM 商品 WHERE 商品コード = 'B020'</code></p>
<div class="row">
<div class="col m6 s12">
ア</p>
<table class="bordered mag_h30">
<thead>
<tr>
<th>商品コード</th>
<th>商品名</th>
<th>販売単価</th>
</tr>
</thead>
<tbody>
<tr>
<td>A010</td>
<td>AAA</td>
<td>2,500</td>
</tr>
<tr>
<td>B020</td>
<td>NULL</td>
<td>1,000</td>
</tr>
<tr>
<td>C030</td>
<td>CCC</td>
<td>4,500</td>
</tr>
</tbody>
</table>
</div>
<div class="col m6 s12">
イ</p>
<table class="bordered mag_h30">
<thead>
<tr>
<th>商品コード</th>
<th>商品名</th>
<th>販売単価</th>
</tr>
</thead>
<tbody>
<tr>
<td>A010</td>
<td>AAA</td>
<td>2,500</td>
</tr>
<tr>
<td>B020</td>
<td>BBB</td>
<td>1,000</td>
</tr>
<tr>
<td>C030</td>
<td>CCC</td>
<td>4,500</td>
</tr>
</tbody>
</table>
</div>
<div class="col m6 s12">
ウ</p>
<table class="bordered mag_h30">
<thead>
<tr>
<th>商品コード</th>
<th>商品名</th>
<th>販売単価</th>
</tr>
</thead>
<tbody>
<tr>
<td>A010</td>
<td>AAA</td>
<td>2,500</td>
</tr>
<tr>
<td>C030</td>
<td>CCC</td>
<td>4,500</td>
</tr>
</tbody>
</table>
</div>
<div class="col m6 s12">
エ</p>
<table class="bordered mag_h30">
<thead>
<tr>
<th>商品コード</th>
<th>商品名</th>
<th>販売単価</th>
</tr>
</thead>
<tbody>
<tr>
<td>B020</td>
<td>BBB</td>
<td>1,000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="chip">解説</div>
<p>この問題は、データベースに関する用語、頻出の SELECT 命令ではない SQL 文、データが入った表、などが並んでいて、一見して難しそうですが、実は、とっても簡単です。</p>
<p>「デッドロック」という言葉の意味がわかっていれば、正解を選ぶことができます。</p>
<p>&nbsp;</p>
<p><span class="bold">デッドロックとは、複数のトランザクション（データベースに対する1つの処理のまとまり）が、お互いに相手の処理が終わるのを待っていて、先に進めない状態</span> です。</p>
<p>DBMS（ Data Base Management System ）は、デッドロックを検出すると、トランザクションを <span class="bold">ロールバック</span>（トランザクションを異常終了させて、データベースの内容を元に戻すこと）します。</p>
<p>したがって、異常終了後の商品表は、問題文に示された商品表と同じ内容の選択肢イです。</p>
<p>「ええっ！ たったそれだけの問題なのですか？」と思われるかもしれませんが、そうなのです。 おそらく出題者は、デッドロックという用語をテーマにした問題を作りたかっただけなのでしょう。</p>
<p>具体例を示したので、このように大げさな問題になってしまったのです。</p>
<p>このような問題に遭遇したときは、難しそうな見かけに惑わされずに、「必ずできる！」という自信を持って解いてください。</p>
<p><span class="chip mag_tp30">解答</span> イ</p>
<p class="grey-text mag_tp30"><i class="material-icons mag_rt05">search</i>タグで関連記事を見る <a href="/tag/データベース/" class="tag">データベース</a> <a href="/tag/トランザクション/" class="tag">トランザクション</a></p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_two</i></span>共有ロックと専有ロックの違いを知っておこう</h2>
<div class="card-panel mag_h30">
問 32　(平成 25 年度 秋期)</p>
<p>表は，トランザクション 1 ~ 3 が資源 A 〜 C にかけるロックの種別を表す。 また，資源へのロックはトランザクションの開始と同時にかけられる。 トランザクション 1 ~ 3 のうち二つのトランザクションをほぼ同時に開始した場合の動きについて，適切な記述はどれか。 ここで，表中の &#8220;－&#8221; はロックなし，&#8221;S&#8221; は共有ロック， &#8220;X&#8221; は専有ロックを示す。</p>
<table class="bordered centered responsive-width">
<thead>
<tr>
<th width="40%">トランザクション ＼ 資源</th>
<th width="20%">A</th>
<th width="20%">B</th>
<th width="20%">C</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>S</td>
<td>－</td>
<td>X</td>
</tr>
<tr>
<td>2</td>
<td>S</td>
<td>X</td>
<td>－</td>
</tr>
<tr>
<td>3</td>
<td>X</td>
<td>S</td>
<td>－</td>
</tr>
</tbody>
</table>
<dl class="inline">
<dt>ア</dt>
<dd>トランザクション 1 の後にトランザクション 3 を開始したとき，トランザクション 3 の資源待ちはない。 </dd>
<dt>イ</dt>
<dd>トランザクション 2 の後にトランザクション 1 を開始したとき，トランザクション 1 の資源待ちはない。 </dd>
<dt>ウ</dt>
<dd>トランザクション 2 の後にトランザクション 3 を開始したとき，トランザクション 3 の資源待ちはない。 </dd>
<dt>エ</dt>
<dd>トランザクション 3 の後にトランザクション 1 を開始したとき，トランザクション 1 の資源待ちはない。 </dd>
</dl>
</div>
<div class="chip">解説</div>
<p>もう 1 つ、トランザクションに関する問題を紹介しましょう。</p>
<p>トランザクションは、データを処理するときに、そのデータが他のトランザクションから使われないように <span class="bold">ロック</span> をかけます。</p>
<p>他のトランザクションは、ロックが解除されるのを待つことになります。 複数のトランザクションが、お互いに相手のロックが解除されるのを待っていて、先に進めない状態になってしまうことが、先ほどの厳選問題 1 のテーマになっていたデッドロックです。</p>
<p>&nbsp;</p>
<p>ロックの種類には、<span class="bold">「共有ロック」</span> と <span class="bold">「専有ロック」</span> があり、それらがこの問題のテーマになっています。</p>
<dl class="background c-round">
<dt class="bold">共有ロック</dt>
<dd>データを参照するときにかけるロックです。 </dd>
<dt class="bold">専有ロック</dt>
<dd>データを更新（登録、更新、削除）するときにかけるロックです。</dd>
</dl>
<p>トランザクションを擬人化すれば、</p>
<dl>
<dt>共有ロック</dt>
<dd>「俺がデータを見ているから、他の奴らは更新するなよ。 ただし、見るだけならいいぞ」というイメージ</dd>
<dt>専有ロック</dt>
<dd>「俺がデータを更新しているから、他の奴らは更新するなよ。 見るのもだめだぞ」というイメージ</dd>
</dl>
<p>つまり、共有ロックがかけられたデータには、他のトランザクションから共有ロックをかけられますが、専有ロックはかけられません。 専有ロックがかけられたデータには、他のトランザクションから共有ロックも専有ロックもかけられません。</p>
<p>&nbsp;</p>
<p>それでは、問題を見てみましょう。</p>
<p>ここでは、ロックをかける A 、B 、C というデータのことを <span class="bold">「資源」</span> と呼んでいます。</p>
<p>トランザクションは 3 つあり、</p>
<ol class="background c-round">
<li>トランザクション 1 は「 A に共有ロックをかける → C に専有ロックをかける」</li>
<li>トランザクション 2 は「 A に共有ロックをかける → B に専有ロックをかける」</li>
<li>トランザクション 3 は「 A に専有ロックをかける → B に共有ロックをかける」</li>
</ol>
<p>という順序で、それぞれ処理を行います。</p>
<p>これによって、どのようなロックの資源待ち（資源のロックの解除待ち）が生じるかを、選択肢から選ぶという問題です。</p>
<p>&nbsp;</p>
<dl class="mag_h30">
<dt>ア</dt>
<dd class="mag_h10">
トランザクション 1 の後にトランザクション 3 を開始すると、先にトランザクション 1 が資源 A に共有ロックをかけ、その後でトランザクション 3 が資源 A に専有ロックをかけようとしますが、既に共有ロックがかけられているので資源待ちになります。</p>
<p>したがって、アの記述は、不適切です。 </dd>
<dt>イ</dt>
<dd class="mag_h10">
トランザクション 2 の後にトランザクション 1 を開始すると、先にトランザクション 2 が資源 A に共有ロックをかけ、その後でトランザクション 1 が資源 A に共有ロックをかけます。</p>
<p>どちらも共有ロックなので資源待ちになりません。</p>
<p>次に、トランザクション 2 は誰も使っていない資源 B に専有ロックをかけ、トランザクション 1 が誰も使っていない資源 C に専有ロックをかけます。 どちらも、資源待ちになりません。</p>
<p>したがって、イの記述は、適切です。 </dd>
<dt>ウ</dt>
<dd class="mag_h10">
トランザクション 2 の後にトランザクション 3 を開始すると、先にトランザクション 2 が資源 A に共有ロックをかけ、その後でトランザクション 3 が資源 A に専有ロックをかけようとしますが、既に共有ロックがかけられているので資源待ちになります。</p>
<p>したがって、ウの記述は、不適切です。 </dd>
<dt>エ</dt>
<dd class="mag_h10">
トランザクション 3 の後にトランザクション 1 を開始すると、先にトランザクション 3 が資源 A に専有ロックをかけ、その後でトランザクション 1 が資源 A に共有ロックをかけようとしますが、既に専有ロックがかけられているので資源待ちになります。</p>
<p>したがって、エの記述は、不適切です。 </dd>
</dl>
<p><span class="chip mag_tp30">解答</span> イ</p>
<p class="grey-text mag_tp30"><i class="material-icons mag_rt05">search</i>タグで関連記事を見る <a href="/tag/データベース/" class="tag">データベース</a></p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_3</i></span>略語の問題を練習するときには、2 つのポイントがあります</h2>
<div class="card-panel mag_h30">
問 36　(平成 25 年度 秋期)</p>
<p>電子メールで，静止画，動画，音声などの様々な情報を送ることができる仕組みはどれか。</p>
<p>ア　FTP　　イ　MIME　　ウ　POP　　エ　TELNET
</p></div>
<div class="chip">解説</div>
<p>選択肢に略語が並んでいますね。 はじめに答えを言ってしまいますが、正解はエの MIME （マイム）です。</p>
<p>これまでの連載でも何度か説明してきましたが、この手の問題を練習するときのポイントは、2 つあります。</p>
<p>&nbsp;</p>
<p>1 つは、 <span class="bold">正解となっている選択肢の略語だけを覚える</span> ことです。</p>
<p>試験では、同じ問題が何度も再利用されています。 この問題も、再利用されるときには、そのまま再利用されるはずなので、ここでは、 MIME という略語だけを覚えてください。</p>
<p>他の略語も気になるかもしれませんが、それらは、それらが正解となっている問題に遭遇したときに覚えてください。 これが、効率的な学習方法です。</p>
<p>&nbsp;</p>
<p>もう 1 つは、 <span class="bold">略語の意味を調べて覚える</span> ことです。</p>
<p>もしも、MIME を「 MIME とは、電子メールで、静止画、動画、音声など様々な情報を送ることができる仕組みである」と覚えるとしたら、MIME という言葉と説明がつながらないでしょう。</p>
<p>「 MIME って何だっけ？」<br />
「電子メールで、静止画、動画、音声など様々な情報を送ることができる仕組みって何だっけ？」</p>
<p>ということになってしまいます。</p>
<p>&nbsp;</p>
<p>MIME は、<span class="bold">Multipurpose Internet Mail Extension</span> という意味です。</p>
<p>直訳すると、「多目的なインターネットメールの拡張」です。</p>
<p>そもそも <span class="bold">インターネットの電子メールというものは、文字しか送れない</span> ようになっています。</p>
<p>静止画、動画、音声などの様々な情報を送ることができるのは、それらのデータを文字に変換してメールに添付しているからです。 その仕組みを MIME と呼びます。</p>
<p>「 MIME は、Multipurpose Internet Mail Extension という意味だ」と覚えれば、「電子メールで、静止画、動画、音声など様々な情報を送ることができる仕組みはどれか」という問題を見て、すぐに MIME を選べるはずです。</p>
<p><span class="chip mag_tp30">解答</span> イ</p>
<div class="divider mag_tp40 mag_bt10"></div>
<p class="grey-text small-text"><i class="material-icons mag_rt05">info_outline</i>MIME タイプに関する詳しい記事</p>
<p><a href="../../mastering_tech/mime_type/"></p>
<div class="row valign-wrapper pad_w20">
<div class="col s3 m2 flex pad_00"><img decoding="async" src="/wordpress/wp-content/uploads/2020/12/mime_cover.jpg" loading="lazy" /></div>
<div class="col s9 m10 pad_10 blue-grey-text bold">基本情報でわかる MIME タイプ 「電子メールの仕組みを知れば役割がわかる」</div>
</div>
<p></a></p>
<div class="divider mag_bt40 mag_tp10"></div>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_4</i></span>ネットワークの階層とは、どういうことかを知ってください</h2>
<div class="card-panel mag_h30">
問 37　(平成 25 年度 秋期)</p>
<p>1 個の TCP パケットをイーサネットに送出したとき，イーサネットフレームに含まれる宛先情報の，送出順序はどれか。</p>
<dl class="inline">
<dt>ア</dt>
<dd>宛先 IP アドレス，宛先 MAC アドレス，宛先ポート番号</dd>
<dt>イ</dt>
<dd>宛先 IP アドレス，宛先ポート番号，宛先 MAC アドレス</dd>
<dt>ウ</dt>
<dd>宛先 MAC アドレス， 宛先 IP アドレス，宛先ポート番号</dd>
<dt>エ</dt>
<dd>宛先 MAC アドレス，宛先ポート番号，宛先 IP アドレス</dd>
</dl>
</div>
<div class="chip">解説</div>
<p>この問題は、とってもよい問題だと思います。</p>
<p>ネットワークが階層化されているとは、どういうことかを、イメージできるようになるからです。</p>
<p>基本情報技術者試験のテーマである OSI 基本参照モデル では、ネットワークを7つの階層に分けていますが、実際に普及しているプロトコルは、</p>
<p>「アプリケーションプロトコル」<br />
「 TCP 」<br />
「 IP 」<br />
「イーサネット」</p>
<p>の 4 つの階層に分けることができます。</p>
<table class="bordered centered responsive-width">
<thead>
<tr>
<th>OSI 基本参照モデル</th>
<th>実際に普及しているプロトコル</th>
</tr>
</thead>
<tbody>
<tr>
<td>アプリケーション層</td>
<td rowspan="3">HTTP や SMTP などの<br />アプリケーションプロトコル</td>
</tr>
<tr>
<td>プレゼンテーション層</td>
</tr>
<tr>
<td>セッション層</td>
</tr>
<tr>
<td>トランスポート層</td>
<td>TCP</td>
</tr>
<tr>
<td>ネットワーク層</td>
<td>IP</td>
</tr>
<tr>
<td>データリンク層</td>
<td rowspan="2">イーサネット</td>
</tr>
<tr>
<td>物理層</td>
</tr>
</tbody>
</table>
<p>ユーザーが Web ブラウザやメールソフトなどのアプリケーションから送信したデータは、4 つの階層を上から下にたどって送出されます。</p>
<p>その際に、それぞれのプロトコルに応じた宛先と差出人などの情報が付加されるのです。</p>
<p>この情報は、データの先頭に付加されるので <span class="bold">「ヘッダ」</span> と呼ばれます。</p>
<p>&nbsp;</p>
<p>アプリケーションで作成されたデータは、 TCP → IP → イーサネット という階層を順番にたどります。</p>
<dl class="background c-round">
<dt class="bold">TCP の階層</dt>
<dd>TCP における宛先と差出人の識別番号である「 TCP ポート番号」が付加されます。 </dd>
<dt class="bold">IP の階層</dt>
<dd>IP における宛先と差出人の識別番号である「 IP アドレス」が付加されます。 </dd>
<dt class="bold">イーサネットの階層</dt>
<dd>イーサネットにおける宛先と差出人の識別番号である「 MAC アドレス」が付加されます。</dd>
</dl>
<p>この状態になったデータを「イーサネットフレーム」と呼びます。</p>
<p>大雑把にいうと、イーサネットフレームの内容は、先頭から順に MAC アドレス、IP アドレス、 TCP ポート番号、アプリケーション のデータなので、ウが正解です。</p>
<p>&nbsp;</p>
<p><i class="material-icons">arrow_back</i> イーサネットフレームを送出する方向</p>
<table class="border">
<tr>
<td>MAC アドレス</td>
<td>IP アドレス</td>
<td>TCP ポート番号</td>
<td>アプリケーションのデータ</td>
</tr>
</table>
<p><span class="chip mag_tp30">解答</span> ウ</p>
<p class="grey-text mag_tp30"><i class="material-icons mag_rt05">search</i>タグで関連記事を見る <a href="/tag/OSI参照モデル/" class="tag">OSI 参照モデル</a></p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_5</i></span>クラスの関連付けの表記方法をまとめて覚えよう</h2>
<div class="card-panel mag_h30">
問 46　(平成 25 年度 秋期)</p>
<p>UML のクラス図のうち，汎化の関係を示したものはどれか。</p>
<div class="flex wrap">
<div class="col m6 s12">
ア<br />
<img decoding="async" class="materialboxed hoverable" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_option_a.png" loading="lazy">
</div>
<div class="col m6 s12">
イ<br />
<img decoding="async" class="materialboxed hoverable" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_option_i.png" loading="lazy">
</div>
<div class="col m6 s12">
ウ<br />
<img decoding="async" class="materialboxed hoverable" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_option_u.png" loading="lazy">
</div>
<div class="col m6 s12">
エ<br />
<img decoding="async" class="materialboxed hoverable" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_option_e.png" loading="lazy">
</div>
</div>
</div>
<div class="chip">解説</div>
<p>この問題を選んだのは、UML のクラス図におけるクラスの関連付けの表記方法をまとめて覚えられるからです。</p>
<p>クラスは、現実世界のオブジェクト（物や生き物）を定型化したものです。</p>
<p>たとえば、会社に勤務している「佐藤さん」「鈴木さん」「田中さん」というオブジェクトは、「社員クラス」に定型化できます。</p>
<p>クラスは、</p>
<p>「クラス名」<br />
「属性（データ）」<br />
「操作（データを使った処理）」</p>
<p>を持ちます。 それらを 3 段重ねの四角形で示したものが、<span class="bold">クラス図</span> です。</p>
<p>この問題では、クラス名だけが示されています。</p>
<figure><figcaption>クラス図の表記方法</figcaption><img decoding="async" class="materialboxed z-depth-5" style="margin:auto;" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_figure2.png" loading="lazy"><br />
</figure>
<p>オブジェクト指向では、システム全体を、クラスを単位として <span class="bold">モジュール化（部品化）</span> します。</p>
<div class="row background c-round">
<div class="col m4 s12">ア <img decoding="async" class="materialboxed" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_option_a.png" " loading="lazy"></div>
<div class="col m8 s12">複数のクラスから構成されたシステムでは、クラスとクラスが関連を持ちます。 単に何らかの「関連」があるということは、クラスと他のクラスを直線で結んで示します。 これは、選択肢アです。</p>
<p>関連の多重度（ 1 対 1 、1 対多、多対多）を書き添えることもでき、1 を「 1 」で表し、多を「 * 」で表します。 選択肢アの多重度は、1 対 1 です。</p>
<p>このクラス図は、「自動車」と「車検証」は、1 対 1 の関連を持っていることを表しています。</p></div>
</div>
<div class="row background c-round">
<div class="col m4 s12">エ <img decoding="async" class="materialboxed" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_option_e.png" " loading="lazy"></div>
<div class="col m8 s12">あるクラスが他のクラスを使っていることを <span class="bold">「依存」</span> と呼びます。</p>
<p>依存は、使う側から使われる側に向かって、破線の矢印を引くことで示します。</p>
<p>選択肢エのクラス図は、「ドライバ」が「自動車」に依存している（ドライバが自動車を使う）ことを表しています。</p></div>
</div>
<div class="row background c-round">
<div class="col m4 s12">ウ <img decoding="async" class="materialboxed" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_option_u.png" " loading="lazy"></div>
<div class="col m8 s12">あるクラスが他のクラスを持っていることを <span class="bold">「集約」</span> と呼びます。</p>
<p>集約は、持つ側にひし形を書き添えた線を引くことで示します。</p>
<p>必須のもの（必ず持っているもの）の場合は、ひし形の内部を黒く塗りつぶし、オプション（持ってなくても構わないもの）の場合は、塗りつぶしません。</p>
<p>選択肢ウのクラス図は、「自動車」が「タイヤ」と「エンジン」を集約している（自動車がタイヤとエンジンを持っている）こと、そしてタイヤとエンジンが必須のものであることを表しています。</p>
<p>さらに、どちらも多重度が 1 対多であることを表しています。</p></div>
</div>
<div class="row background c-round">
<div class="col m4 s12">イ <img decoding="async" class="materialboxed" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_option_i.png" loading="lazy"></div>
<div class="col m8 s12">あるクラスの上位概念のクラスを定義することを <span class="bold">「汎化」</span> と呼びます。</p>
<p>汎化は、上位概念のクラスに向かって、三角形を書き添えた線を引くことで示します。</p>
<p>選択肢イのクラス図は、「スポーツカー」の上位概念として「自動車」を定義することを表しています。</p></div>
</div>
<p>この問題は、汎化を表しているクラス図を選ぶものなので、選択肢イが正解です。</p>
<p>&nbsp;</p>
<p>汎化は、少しわかりにくいと思いますので、補足説明をしておきましょう。</p>
<p>問題に示された「スポーツカー」の上位概念が「自動車」であるという例より、複数のクラスの共通点を抽出したクラスを定義するという例の方が、わかりやすいでしょう。</p>
<p>以下のクラス図は、「スポーツカー」と「トラック」の共通点を抽出したクラスとして「自動車」を定義しています。 スポーツカーとトラックは、どちらも自動車だからです。 この場合、自動車を「スーパークラス（上位クラス）」、スポーツカーとトラックを「サブクラス（下位クラス）」と呼びます。</p>
<figure>
<img decoding="async" class="materialboxed" style="margin:auto;" src="/wordpress/wp-content/uploads/2019/08/h25_a_q46_figure.png" loading="lazy"><br />
</figure>
<p><span class="chip mag_tp30">解答</span> イ</p>
<p class="grey-text mag_tp30"><i class="material-icons mag_rt05">search</i>タグで関連記事を見る <a href="../../tag/uml" class="tag">UML</a></p>
<p>&nbsp;</p>
<div class="divider mag_h50"></div>
<p>記事をお読みいただきありがとうございます。</p>
<p>もしも、一度解いただけでは、よくわからない問題があったなら、わかるまで何度でも練習してください。 <span class="bold">「やるべき問題」は「わかるまでやるべき問題」</span>だからです。</p>
<p>この厳選問題大全集が、受験者の皆様のお役に立てば幸いです。</p>
<p>&nbsp;</p><p>The post <a href="https://fenavi.seplus.jp/kakomon-gensen/h25_autumn/">「厳選5題」過去問と解説 | 平成25年度 秋期 の過去問やるならこれをやれ</a> first appeared on <a href="https://fenavi.seplus.jp">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
