ホーム > データベーススペシャリスト試験 > 2010年
データベーススペシャリスト試験 2010年 午後1 問02
データベースの設計に関する次の記述を読んで, 設問1〜3に答えよ。
B社は,流通系のクレジットカード会社である。 B 社では,新たに開発するシステムに合わせて, 現行業務の追加・変更を予定している。 開発プロジェクトではシステム部のC君がデータベースの設計を担当することになった。
〔現行業務の概要〕
1.会員登録
(1) 会員
会員には,一意な会員番号を付与する。 会員は会員区分の値の設定によって, 本会員と家族会員に区別する。 さらに, 本会員は職業区分の値の設定によって、有職(会社勤務又は自営業), 無職(年金受給,不動産収入など), 及び学生に区別する。
一方,家族会員は、本会員の家族にカードを発行する場合に登録する。 家族会員には、利用明細の表示順を表す家族番号を付与する。
表1に, 本会員・家族会員登録時の各設定項目を示す。
(1) 会員
会員には,一意な会員番号を付与する。 会員は会員区分の値の設定によって, 本会員と家族会員に区別する。 さらに, 本会員は職業区分の値の設定によって、有職(会社勤務又は自営業), 無職(年金受給,不動産収入など), 及び学生に区別する。
一方,家族会員は、本会員の家族にカードを発行する場合に登録する。 家族会員には、利用明細の表示順を表す家族番号を付与する。
表1に, 本会員・家族会員登録時の各設定項目を示す。

(2) 契約
本会員とクレジットカード契約を結ぶ。 契約単位に一意な契約番号を付与し,支払銀行・支店・決済口座番号を設定する。
(3) クレジットカードの発行
本会員及び家族会員に対してクレジットカードを発行する。 本会員に発行するカードを本会員カード, 家族会員に発行するカードを家族カードと呼ぶ。 クレジットカードごとに一意なカード番号を付与する。
2.クレジットカードの利用
(1) クレジットカードの利用形態
クレジットカードの利用形態には,ショッピング (物品購入のこと,以下,SHという)とキャッシング (現金借入れのこと, 以下, CAという)があり、利用区分に区分値を設定して管理する。 支払方法には, SH では, 1回払い 2回払い,ボーナス1回払い,及びリボルビング (以下, リボという) 払いが, CA では,1回払いとリボ払いがあり, 支払区分に区分値を設定して管理する。 表2に,利用区分・支払区分別の支払方法を示す。
(1) クレジットカードの利用形態
クレジットカードの利用形態には,ショッピング (物品購入のこと,以下,SHという)とキャッシング (現金借入れのこと, 以下, CAという)があり、利用区分に区分値を設定して管理する。 支払方法には, SH では, 1回払い 2回払い,ボーナス1回払い,及びリボルビング (以下, リボという) 払いが, CA では,1回払いとリボ払いがあり, 支払区分に区分値を設定して管理する。 表2に,利用区分・支払区分別の支払方法を示す。

(2) クレジット残高とクレジット枠
引き落としが完了していない利用金額をクレジット残高 (以下, CR 残高という)という。CR 残高は, CR 総残高、利用区分別に SH 残高と CA 残高, さらに支払区分別に SH1 回払い残高などで管理する。 ただし, SH2回払いとボーナス 1回払いとは合計残高で管理する。 CR 残高の上限値として, クレジット枠(以下, CR 枠という)を設定する。 CR 枠と CR 残高は契約単位に管理する。 表3 に CR残高ごとの CR枠を示す。

(3) クレジットカード利用時の確認
クレジットカード利用時には、 有効年月, 暗証番号などのほかに次のことを確認する。
① 利用区分と支払区分が,表2で示した選択可能な組合せであること (選択不可の場合は“区分エラー” とする)
② 今回の利用金額が, CR 枠から CR 残高を差し引いた範囲内であること (範囲を超えた場合は “CR 枠エラー”とする)
3.利用代金明細書の作成
契約単位に, 本会員と家族会員を合わせて月ごとに利用代金明細書を作成し,請求する。 利用代金明細書の例を図1に示す。
(1) 今回請求情報
契約者の住所,氏名,支払年月日, 今回請求金額合計などを示す。
(2) 利用明細
前月の利用明細と当月の請求対象となる前々月以前の利用明細について,利用区分別に利用明細番号を利用年月日順に付与し,利用明細番号順に示す。
なお,利用区分と利用年月日が等しい複数の利用明細については,会員が別の場合は本会員, 家族番号の小さい家族会員の順に、同じ会員の場合はカードごと利用ごとに付番される利用履歴番号の順に利用明細番号を付与する。

(3) ショッピングリボ払い及びキャッシング支払の明細
利用残高(前回支払後残高+今回利用金額),今回請求金額(元金+(利息,手数料)),支払後残高などを支払区分ごとに示す。
(4) 契約内容
リボ払い元金支払定額, CA 手数料などの契約情報を示す。
〔テーブル設計〕
C君は,現行データベースのテーブル構造を図2のように整理した。

〔現行業務に対する追加・変更〕
B社では,現行業務について,次のような追加・変更を計画している。
(1) 会員登録方法の改善
同一人が重複して家族会員として登録されることがある。 例えば、 図3に示すように,共稼ぎ夫婦がそれぞれに本会員カードを保有し, 互いに相手に対しての家族カードを保有していたり, 子供が両親の家族カードを保有していたりする場合がある。

この点は,会員の利用状況分析では問題があるという判断があり,同一人に対しては,一つの会員レコードだけを対応させることにした。これに伴って, 本会員かつ家族会員という会員レコードが存在する。 そのため “会員” テーブルを次のように変更する。
・本会員か家族会員かを排他的に識別していた会員区分を削除する。
・当該会員が,本会員であることを表す本会員フラグ及び家族会員であることを表す家族会員フラグを追加する。
新たに開発するシステムでは,既存会員についてデータ移行時に家族会員の統合を行うことにする。また、新規カード発行に伴う会員登録時には既存会員との照合チェックを行い,既存会員であった場合には新たに会員を登録せずにカードの追加発行を行う。
(2) 分割払の追加
分割払について,6回、12回、24回などの多様な支払方法を選べるようにする。 また,請求時の利用明細欄に、今回の請求が何回目の支払になるのかを回数で示すことにする。ただし,現在の SH2 回払いについては変更せず,3回以上の分割払について,新たに支払区分を一つだけ追加するものとする。
解答に当たっては、巻頭の表記ルールに従うこと。
なお,テーブル構造の表記は,“関係データベースのテーブル (表)構造の表記ルール”を用いること。 さらに, 主キー及び外部キーを明記せよ。
設問1(1):図2について,(1)〜(3)に答えよ。
“請求” テーブル中の(a)に適切な字句を入れて, テーブルを完成させよ。 ただし, 図1中の項目のうち, ほかの項目から導出可能な項目は列としてもたないものとする。また,本文中と同じ意味を表す列名は,本文中の用語を用いること。
模範解答
a:SH リボ前回支払後残高,CA リボ前回支払後残高
解説
1. 論点整理
本問では,「請求」テーブル中の空欄
特に押さえるべきポイントは以下のとおりです。
(a)
に入れるべき項目を問われています。特に押さえるべきポイントは以下のとおりです。
-
「請求」テーブルの構造
契約単位で請求情報を管理するテーブルで,すでに次のカラムが定義されています。 -
追加すべきカラムの条件
- 図1「ショッピングリボ払およびキャッシング支払の明細」で示される項目
- 他の項目から導出可能なものは持たない
-
図1該当箇所(問題文からの引用)
「(3) ショッピングリボ払い及びキャッシング支払の明細
利用残高(前回支払後残高+今回利用金額),今回請求金額(元金+(利息, 手数料)),支払後残高などを支払区分ごとに示す。」
このうち「前回支払後残高」は明細に必須で,「利用残高」「支払後残高」は導出可能(=①+②,③−⑤)なので格納しません。
また明細は支払区分ごとに「SH リボ」と「CA リボ」の2行があるため,それぞれの「前回支払後残高」をカラムとして持つ必要があります。
また明細は支払区分ごとに「SH リボ」と「CA リボ」の2行があるため,それぞれの「前回支払後残高」をカラムとして持つ必要があります。
――以上より,空欄
「SH リボ前回支払後残高」
「CA リボ前回支払後残高」
となります。
(a)
に入るべきキーワードは「SH リボ前回支払後残高」
「CA リボ前回支払後残高」
となります。
2. 解答の根拠
-
「ショッピングリボ払およびキャッシング支払の明細」で要求される列
問題文中に次の記述があります。「利用残高(前回支払後残高+今回利用金額),今回請求金額(元金+(利息,手数料)),支払後残高などを支払区分ごとに示す。」ここで「前回支払後残高」は明細の必須項目として列挙されているため,テーブルにも保持します。 -
支払区分ごとに2種類必要
支払区分は「SH リボ」(ショッピングリボ) と「CA リボ」(キャッシングリボ) があるため,
明細2行分を別カラムで表す必要があります。 -
「他の項目から導出可能な項目は列としてもたない」
問題文にも「図1中の項目のうち,ほかの項目から導出可能な項目は列としてもたないものとする。」
と定義されています。- 「利用残高」=前回支払後残高+今回利用金額
- 「支払後残高」=利用残高−元金
はいずれも導出可能なので,テーブルには持ちません。
これらから,(a) には
SH リボ前回支払後残高, CA リボ前回支払後残高
を追加するのが適切です。
3. 受験者が誤りやすいポイント
-
「利用残高」「支払後残高」を追加しがち
明細表に並んでいるため、ついテーブルに持たせたくなります。しかし問題文で「導出可能なものは列としてもたない」とあるとおり、これらは計算式で求められる項目です。 -
支払区分ごとにまとめてしまう
「リボ前回支払後残高」とひとまとめにせず,SH系とCA系で個別のカラムが必要です。 -
呼称の間違い
問題文や図中の用語をそのまま使うことが求められています。「前回支払後残高」を省略せず,正式名称「SH リボ前回支払後残高」「CA リボ前回支払後残高」と記述しましょう。
4. 試験対策まとめ
- 「導出可能な項目は列として持たない」という設計ルールを必ず確認する。
- 明細表とテーブル設計の対応を行う際には,「明細に表示するがテーブルに持たない」ものを確実に区別する。
- 問題文と図で用いられている用語は正確にトレースする。
- 支払区分などの分類は,必要に応じてカラムを複数設ける(まとめない)。
完成形:請求テーブル
設問1(2):図2について,(1)〜(3)に答えよ。
“契約”テーブルの会員番号と, “カード” テーブルの会員番号は同じ列名であるが,取り得る値の意味が異なる。 その違いを60字以内で述べよ。
模範解答
“契約”の会員番号は,本会員番号に限定されるのに対し,“カード”の会員番号は,すべての会員を対象とする。
解説
1. キーワード・論点の整理
- 「本会員番号に限定」
- 「すべての会員を対象」
上記2点が問われている「会員番号」の意味の違いです。
2. 論理的な解答根拠の説明
問題文から該当箇所を引用して整理します。
契約
「本会員とクレジットカード契約を結ぶ。」
(…)
→ ここでの契約は「本会員」に対してのみ結ばれる。そのため 契約テーブルの会員番号 は本会員番号に限定されます。
クレジットカードの発行
「本会員及び家族会員に対してクレジットカードを発行する。」
→ カードは本会員・家族会員の両方に発行できる。そのため カードテーブルの会員番号 は全会員を対象とします。
3. 受験者が誤りやすいポイント
- テーブル上の列名が同じ「会員番号」なので、同じ性質だと誤解しやすい。
- 「家族会員にも契約がある」と思い込みやすいが、家族会員はあくまで本会員の契約に紐づいたカード保有者です。
- 「契約テーブルに家族会員のレコードが登録されている」と思うと混乱しますが、家族カードは契約テーブルではなくカードテーブルで管理されます。
4. 試験対策ポイント
- 契約(contract) は常に「本会員」と結ぶルールであることを押さえる。
- カード(card) は「本会員/家族会員」のいずれにも発行できる点を区別して覚える。
- テーブル設計の際、同じ列名でも外部キー先の意味範囲が異なる場合があることを意識する。
参考:両テーブルの比較
設問1(3):図2について,(1)〜(3)に答えよ。
“請求利用明細” テーブルについて候補キーを二つ挙げよ。
模範解答
①:・契約番号,支払年月日,利用区分,利用明細番号
②:・カード番号,利用履歴番号,支払年月日
解説
キーワード整理
-
候補キー(Candidate Key)
→ テーブル内の各レコードを一意に識別できる最小の属性の組み合わせ -
請求利用明細テーブルの属性
図2の記述を基に整理すると、次の6属性がある(図中では「利用履歴番号」が重複記載されていますが、
1つは「利用明細番号」を指すものと解釈します)。 -
模範解答の候補キー
① 契約番号+支払年月日+利用区分+利用明細番号
② カード番号+利用履歴番号+支払年月日
解答の論理的説明
-
「請求利用明細」テーブルの役割
問題文(「3.利用代金明細書の作成」(2))には、「利用明細番号を利用年月日順に付与し, 利用明細番号順に示す」
とあるように、1回の請求(支払年月日)ごとに、契約単位・利用区分単位で行を特定するための 利用明細番号 が必要です。 -
候補キー①の妥当性
- 契約単位かつ請求単位(支払年月日)で明細書を作成
- さらに利用区分(SH/CA)ごとに連番を振る
- よって、
「契約番号 + 支払年月日 + 利用区分 + 利用明細番号」
という組み合わせは、テーブル中で必ず一意にレコードを特定できます。 - 最小性についても、これら4属性のいずれかを除くと同一レコードを区別できなくなるため、最小のキーとなります。
-
候補キー②の妥当性
- 請求利用明細は「どのカードで」「いつ(支払年月日)」「どの利用イベント(利用履歴番号)か」という観点でも一意に特定可能
- 問題文 (2) に
「同じ会員の場合はカードごと利用ごとに付番される利用履歴番号の順に利用明細番号を付与」
とあることから、カード番号+利用履歴番号 は利用イベントを一意に識別 - ただし明細書単位でまとめるために 支払年月日 を加えないと、同一利用履歴が異なる請求月にまたがるケースで重複する可能性がある
- 以上から、
「カード番号 + 利用履歴番号 + 支払年月日」
もまた 最小かつ一意 な候補キーになります。
受験者の誤りやすいポイント
試験対策として覚えておくポイント
- 候補キーの定義
- テーブル内のレコードを一意に識別でき、かつ不要な属性が含まれない最小の属性集合
- 明細テーブルのキー設計
- 親側(契約)と請求月を必須要素として含める
- SH/CA や明細行番号など、業務仕様で連番を振る単位がキーに含まれる
- 業務要件の読み落とし防止
- 問題文中の「~ごとに連番を振る」「~ごとに管理する」といったキーワードは、キー設計のヒント
- 複数のキー候補
- ひとつのテーブルでも「複数の候補キー」を検討できることを意識する
- 主キーはその中から業務上ふさわしいものを選択するが、候補キーはすべて挙げられるようにすること。
設問2(1):現行業務におけるテーブル内の項目の制約について(1),(2)に答えよ。
“会員” テーブルの項目は, NULL 不可となることが静的に決まらないので,列ごとに NOT NULL 制約を定義できない。 そこで, C. 君は NULL 不可であることを動的に管理する“項目チェック” テーブルを図 4 のように定義した。図4中の(b)に適切な字句を入れて, テーブルを完成させよ。 ただし, “会員” テーブルの列又は職業区分の区分値が追加された場合にも, “項目チェック” テーブルの行の追加だけで対応できるものとする。 また, 本文中と同じ意味を表す列名は,本文中の用語を用いること。


模範解答
b:一連番号,会員列名称,会員区分,職業区分
解説
1. 模範解答につながるキーワード・論点整理
模範解答
(b) = 「一連番号,会員列名称,会員区分,職業区分」
(b) = 「一連番号,会員列名称,会員区分,職業区分」
2. なぜその解答になるのか ― 論理的な導出手順
-
問題文の前提
-「“会員”テーブルの項目は,NULL 不可となることが静的に決まらない」
-「列ごとに NOT NULL 制約を定義できない」
⇒ 行レベルで必須/任意を切り替えられる仕組みが必要。 -
“項目チェック”テーブルで管理したい情報
① どの列(項目)か …… 列を識別する「会員列名称」
② どの種別の会員か …… 「会員区分」(本会員/家族会員)
③ 本会員の場合さらにどういう職業か …… 「職業区分」(有職/無職/学生)
④ 必須かどうかの結果フラグ(図4の別欄)
⑤ 行を一意に識別し,後の増分にも耐えられる主キー
= 「一連番号」(サロゲートキー) -
拡張性の検証
・会員テーブルに列が追加 →「会員列名称」値を増やせば良い
・会員区分や職業区分が追加 → その組合せ分だけ行を追加すれば良い
→ 列構造は変えずに行追加だけで吸収できる。 -
主キー構成
行を一意に識別できなければ重複登録の恐れがある。
サロゲートキーとしての「一連番号」を置き,さらに論理的同一性を担保するため「会員列名称+会員区分+職業区分」も含め複合一意性を確保する設計が妥当。
⇒ (b) の欄には「一連番号,会員列名称,会員区分,職業区分」を並べて主キーを示す。
3. 受験者が誤りやすいポイント
4. 試験対策まとめ ― 覚えておきたい知識
-
動的必須制約は「マスタ+制御テーブル」で実現
・テーブル名/列名/条件列(区分値など)/必須フラグ
・列追加や区分値追加に耐える行追加方式を優先。 -
主キー設計の原則
・業務的に一意な列で足りても,保守・変更を考えてサロゲートキーを置く選択肢を忘れない。
・特に「設定テーブル」「制御テーブル」では (サロゲートキー+論理的複合キー) の併用が有効。 -
テーブル・列命名は「本文中と同じ用語を使う」
→ 試験問題では用語ぶれが減点対象になることがあるので注意。 -
NULL 制御の典型的アプローチ
・列定義レベル (NOT NULL)
・CHECK 制約 (複雑条件は難)
・トリガ/アプリケーション
・今回のように「制御テーブル+アプリ側バリデーション」
これらを意識しておけば,類似の「動的制約」問題でも確実に点が取れます。
設問2(2):現行業務におけるテーブル内の項目の制約について(1),(2)に答えよ。
クレジットカード利用時に、 利用形態別に利用金額をチェックし, 正常終了とエラーを判定する次の決定表中の,(c)〜(e)に適切な字句を入れて表を完成させよ。


模範解答
c:CA 枠-CA残高
d:S2 枠-S2残高
e:C1 枠-C1残高
解説
キーワードと論点整理
-
CR枠/CR残高の制限チェック
問題文にある「今回の利用金額が, CR枠から CR残高を差し引いた範囲内であること (範囲を超えた場合は “CR枠エラー”)」
→ 各利用形態ごとに「利用可能額=該当枠 − 該当残高」を計算し、今回利用金額と比較する。 -
利用区分・支払区分による枠と残高の対応
表3より、 -
決定表(c)~(e)の位置
小問の決定表は、利用区分・支払区分の組合せごとに「判定用の利用可能額」を埋める形式です。- (c): CA(利用区分=2)のリボ払い/1回払い共通の枠チェック
- (d): SH(利用区分=1)の2回払い・ボーナス1回払いの枠チェック
- (e): CAの1回払い(支払区分=1)の枠チェック
解答の論理的説明
- 【問題文】より
「今回の利用金額が, CR枠から CR残高を差し引いた範囲内であること (範囲を超えた場合は “CR枠エラー”)」
→ 枠チェックの基本式は利用可能額 = 該当CR枠 − 該当CR残高
- 表3で「利用区分・支払区分ごとに管理されるCR残高」と「対応するCR枠名称」が定義されている。
- CA全体のチェックには「CA枠 − CA残高」
- SHの2回払/ボーナス1回払合計には「S2枠 − S2残高」
- CA1回払いには「C1枠 − C1残高」
以上から決定表の空欄には以下を当てはめます。
受験者が誤りやすいポイント
-
総枠(CR総枠)と各種枠の混同
- 「CR総枠 − CR総残高」ではなく、各利用形態ごとの枠/残高を使う。
- CA利用なのにSH枠でチェックしてしまうと誤り。
-
SH2回払いとボーナス1回払いの区別
- 表3中では「SH2回払いとボーナス1回払いの合計残高」をまとめて S2残高 とし、専用の S2枠 を設けている。
-
CAリボとCA1回払いの混同
- CA全体チェック用は CA枠−CA残高。
- しかし、CA1回払い単独でチェックする際は C1枠−C1残高。
試験対策として覚えておくべきポイント
- 表3の「CR残高名称/略称/CR枠名称」の対応をしっかり暗記する。
- 決定表では必ず「該当枠 − 該当残高」で利用可能額を算出するという基本原則を押さえる。
- 利用区分・支払区分の組み合わせごとに、どの枠・残高を使うか判断する練習問題を解き、パターンを体得する。
設問3(1):〔現行業務に対する追加・変更〕 について,(1),(2)に答えよ。 ただし, 設問2問う内容は考慮しないものとする。
図2のテーブル構造に,会員登録方法の改善策を施したとしても, ほかにもまだ不具合がある。
(a)不具合のあるテーブル名を一つ挙げ, 不具合の内容を 35 字以内で述べよ。
(b)新たにテーブルを作成せずに不具合を解決するために, 変更すべきテーブル名,列名を挙げよ。 また, 当該列の変更操作を, 削除又は追加のいずれかで答えよ。 ただし, 会員区分の削除, 本会員フラグ及び家族会員フラグの追加については除くものとする。
模範解答
(a) テーブル名:会員テーブル
不具合の内容:複数の家族会員がいたとき,家族番号と続柄を全員分登録できない。
(b) :


解説
模範解答の論点整理
以下のキーワードが今回の解答の核心です。
- 不具合のあるテーブル:会員テーブル
- 管理すべき属性:家族番号・続柄
- 発生している問題点:複数の家族会員を会員テーブルで扱えない
- 解決方法:会員テーブルから該当列を削除し,カードテーブルに追加
解答に至る論理的説明
-
不具合の所在
問題文中に,「複数の家族会員がいたとき,家族番号と続柄を全員分登録できない」とあり,
→ 家族会員の情報(家族番号・続柄)を「会員」テーブルで持つ設計に無理があることが示されています。 -
属性の所属を見直す根拠
- 「クレジットカードの発行」では,本会員カード・家族カードごとにカード番号を付与する。
- 「家族会員には、利用明細の表示順を表す家族番号を付与する」「続柄」を登録するとある。
→ 家族番号・続柄は「カード発行単位」の情報であり,カードテーブルに置くのが自然です。
-
テーブル構造の修正
- 会員テーブルから「家族番号」「続柄」を削除
- カードテーブルに「家族番号」「続柄」を追加
これにより,1会員が複数の家族カードをもつ場合でも属性を個別に管理できます。
誤りやすいポイント
- 家族番号・続柄を「契約」や「請求利用明細」テーブルに置いてしまう
→ これらは“カード発行”の属性であり,契約単位や請求明細単位の情報ではありません。 - 「家族構成」などの汎用的な列名を使ってまとめてしまう
→ 複数値属性になりがちで,正規化の観点から不適切です。
設問(b)の変更内容まとめ
試験対策としてのまとめ
- 属性は「どの実体(エンティティ)の情報か」を明確に切り分ける
- 1つのセルに複数の値を持たせない(正規化の基本)
- 主キー・外部キーの役割を意識し,リレーションシップ単位で属性を配置する
- 漏れや重複を防ぐため,「単位(カード発行/契約/会員)」を問題文で確認する習慣をつける
設問3(2):〔現行業務に対する追加・変更〕 について,(1),(2)に答えよ。 ただし, 設問2問う内容は考慮しないものとする。
分割払の追加のために, “カード利用履歴” テーブルと “請求利用明細” テーブルに追加すべき列名をそれぞれ答えよ。
模範解答
カード利用履歴:分割回数
請求利用明細:今回回数,今回請求金額
解説
1. 模範解答の核心となるキーワードや論点
- 「分割払」の支払方法を拡張する
→ 支払区分を追加するだけでなく,利用履歴にも「何回分割で支払うか」を記録する必要がある - 「今回の請求が何回目の支払になるのかを回数で示す」
→ 請求明細に,「今回回数」を示す列が必要 - 「今回請求金額」を明細に表示
→ 分割回数に応じた「今回請求金額」を保持する列が必要
2. なぜその解答になるのか【問題文の引用を交えた説明】
(1) カード利用時に「何回分割で支払うか」を機能要件として登録する
「分割払について,6回、12回、24回などの多様な支払方法を選べるようにする。」
利用明細に対して分割回数の情報がなければ,あとでどの支払区分に属するかも,請求時の回数管理もできません。したがって,カード利用履歴テーブルに「分割回数」を追加します。
(2) 請求時に「今回が何回目の支払か」を示す
「請求時の利用明細欄に、今回の請求が何回目の支払になるのかを回数で示すことにする。」
これは請求側の明細表示要件です。請求明細ごとに「今回回数」を示すため,請求利用明細テーブルに「今回回数」を追加します。
(3) 請求時に分割払の「今回請求金額」を計算・表示
問題文が明示していないものの,請求利用明細欄に金額を示す必要があるため,「今回請求金額」も新設します。
問題文が明示していないものの,請求利用明細欄に金額を示す必要があるため,「今回請求金額」も新設します。
3. 誤りやすいポイント
- 分割回数と今回回数を混同する
- 分割回数:契約時(利用時)に何回で支払うかの総回数
- 今回回数:請求月ごとに「今回が第●回目か」を示す番号
- 追加すべきテーブルを取り違える
- 分割回数は「カード利用履歴」に記録
- 今回回数/今回請求金額は「請求利用明細」に記録
- 「今回請求金額」を忘れる
- 分割回数だけ記録しても,請求明細に金額が出せない
4. 追加すべきカラム一覧
5. 試験対策として覚えておくべきポイント
- 要件(業務仕様)→ エンティティ(テーブル)→ 属性(カラム)への変換手順を常に意識する
- 「いつ」「どこで」「何を示す」情報かで,属性をどのテーブルに置くか判断する
- 分割払の管理では
- 利用時に「総回数」を記録
- 請求時に「何回目か」と「今回の金額」を記録
の2段階で設計する
- 記載例や問題文のキーワードを正確に拾い,カラム名は問題文の表記ルールに合わせること(例:「今回回数」「分割回数」「今回請求金額」)