平成29年春期午後問6タプルとは

豆大福さん  
(No.1)
https://www.ap-siken.com/kakomon/29_haru/pm06.html
2点分からないことがあります。

①タプルという言葉が出てきました。
今まで「レコード」とか「列」くらいの意味で考えていました。
https://www.ap-siken.com/keyword/9/9-1/#a6985c50a50cbce0e1e6e2387fe942e1dd05c2e0
しかしこの問題ではなんだかそれでは当てはまらないような気がします。今までのE-R図の理解では表現できないのです。

本文「例えば図1の購買稟議申請の金額欄の場合、申請書項目マスタには項目キーが'amount'、項目名が'金額'、項目の値の型が'整数'のタプルが、申請書項目には、項目キー'amount'、項目値が'2500000'のタプルが登録される」の部分です。

後半の申請書項目に項目キーamount、項目値250000のタプルが登録されることは想像ができました。
「申請書が出されるたびにこの申請書に入力されている金額が幾らか登録しているんだな」という理解です。

しかし前半の申請書項目マスタに項目キーamount、項目名金額、項目の値の型が整数のタプルが登録されることはよくわかりませんでした。
申請書が登録されるたびに申請書項目マスタにタプルが登録されては書式IDが重複してしまいますよね?

本文【作成画面】では「あらかじめ書式を選択して」とありますので、書式マスタの書式IDは作成できる申請の種類の数だけ存在し、申請書項目マスタのタプル(レコード?)は申請の種類の数 × その申請書の中の項目の数だけある。と思っていましたが違うのでしょうか?

②図4の穴埋めです。
t1の結果が金額または初回支払額
t1の結果が支払日または初回支払日
という部分がいまいち自身が無く確認いただきたいです💦

where句で書かれているのは
購買のときはt1の項目が金額且つt2の項目が支払日を
契約のときはt1の項目が初回支払額且つt2の項目が初回支払日のレコードを出力しろ
というSQL。

t1は金額関連を検索するために結合、t2は日付を検索するために結合、という意味で
購買であればSQL内の動きは1つの申請書IDに対して9レコード検索されるがt1が金額且つt2が支払日のレコードは一つしかない、だからt1.項目値、t2.項目値で一意に出力できるよ

このような説明であっていますでしょうか?
正直問題を見たとき何が起きているのか全く分からず解説の意味を必死に読み解いた結果なので知識不足かと思います。
2026.01.15 14:58
応用太郎2さん 
(No.2)
まず①について
> しかし前半の申請書項目マスタに項目キーamount、項目名金額、項目の値の型が整数のタプルが登録されることはよくわかりませんでした。
> 申請書が登録されるたびに申請書項目マスタにタプルが登録されては書式IDが重複してしまいますよね?
> 本文【作成画面】では「あらかじめ書式を選択して」とありますので、書式マスタの書式IDは作成できる申請の種類の数だけ存在し、申請書項目マスタのタプル(レコード?)は申請の種類の数 × その申請書の中の項目の数だけある。と思っていましたが違うのでしょうか?
正しいです。
これは問題文の書き方が悪いですね。
ご想像どおり、この二つに登録されるタイミングはそれぞれ異なります。
申請書項目マスタは「稟議申請システム運用開始時、或いは書式の種類が増えたとき」で、そのあと申請者がいくら稟議申請しても内容が変わることはありません。
申請書項目は「申請書が出されるたび」です。
また、"タプル"は"レコード (行)"とそのまま読み替えて問題ありません。"列 (カラム)"は意味が異なるため注意です。
2026.01.15 17:24
応用太郎2さん 
(No.3)
②についてもそのご認識で正しいです。
1点だけ細かいツッコミですが、
> 購買であればSQL内の動きは1つの申請書IDに対して9レコード検索されるが
9レコード目でamountとpay_dateの組み合わせがヒットしたあとも検索し続けるので最終的には25レコード検索します。

参考になりましたら幸いです。
2026.01.15 17:43
GinSanaさん 
AP プラチナマイスター
(No.4)
この投稿は投稿者により削除されました。(2026.01.15 22:56)
2026.01.15 22:56
GinSanaさん 
AP プラチナマイスター
(No.5)
>1つの申請書IDに対して9レコード検索される
解説の図をみて、9レコード(目)というのはこの話か、と理解しました。
図だと10レコード以降が・・・で止まっていますが、全部を直積(結合で無条件に掛け合わせた全パターン)として作った後に、すべての行に対しamountとpaydateかどうかを一斉に確認した上で1つだけ残る、という挙動です。
2026.01.15 23:07
豆大福さん  
(No.6)
応用太郎さん
ありがとうございます、タプルという用語になじみがありませんでしたので読み替えてよしと言っていただけたのは自信となりました。SQLの結果は間違えておりましたがスッキリしました!
2026.01.17 23:51
豆大福さん  
(No.7)
GinSanaさん
解説ありがとうございます。自分でどこが分かっていなかったのかやっとわかりました!💦
複数件ヒットするのでは?という勘違いと、模範解答のSelect文では1件のみに定まることに違和感があったようです。助かりました。
2026.01.17 23:54

返信投稿用フォーム

※SQL文は全角文字で記載してください。
※宣伝や迷惑行為を防止するため、当サイト、姉妹サイト、IPAサイト以外のURLを含む記事の投稿はできません。

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop