令和7年秋期試験 午後問6【データベース】
広告
管理人
(No.1)
令和7年秋期試験 午後問6(データベース)についての投稿を受け付けるスレッドです。
2025.10.12 00:05
んにゃぴ……さん
(No.2)
UPDATEって書いちゃった……
2025.10.12 15:41
疲れたさん
(No.3)
え、違うんですか!!??
2025.10.12 15:44
んにゃぴ……さん
(No.4)
ALTER TABLEじゃないですかね
表そのものの変更なので
表そのものの変更なので
2025.10.12 15:46
終わりさん
(No.5)
DBだけ簡単だった…
それ以外キツすぎる
それ以外キツすぎる
2025.10.12 15:48
全部した高度だけどさん
(No.6)
a希望日時
B→
C最大受講者数
Dレベル
2日常英会話講座のジャンルは変更もするから
3e
設問3
WITH だめですね。
G Date H TIME ここは雰囲気も混ざってます。
I 開催 番号=開催 番号
(ネットワークやシステム開発などに命注いでたため急遽この科目にしたので拙い 回答です。)
B→
C最大受講者数
Dレベル
2日常英会話講座のジャンルは変更もするから
3e
設問3
WITH だめですね。
G Date H TIME ここは雰囲気も混ざってます。
I 開催 番号=開催 番号
(ネットワークやシステム開発などに命注いでたため急遽この科目にしたので拙い 回答です。)
2025.10.12 15:59
応用太郎2さん
(No.7)
DB簡単だったにも関わらず回収される直前になって2問くらい解答記入するところ間違えてるのに気づいた…
2025.10.12 15:59
セマフォさん
(No.8)
もしかして、席一番右後ろにいた?
2025.10.12 16:00
ねこさん
(No.9)
全然違うくね?
2025.10.12 16:04
かわはさん
(No.10)
全然違うんだがw
2025.10.12 16:08
んにゃぴ……さん
(No.11)
内部結合のon句って、t0とt1の講座コードと開催番号がイコールでいいんですかね……
2025.10.12 16:08
なとさん
(No.12)
ジャンルとレベルな
2025.10.12 16:09
6浪さん
(No.13)
Iは講座コードと開催番号の2つをAND使って指定する必要があったような…
2025.10.12 16:09
たぬきさん
(No.14)
a 受講予約結果
b←
(1)
cレベル
dジャンル
(2)サブタイプにおいて共通する属性でないから
(3)
年齢層
f ALTER
g 勤務年月日、講師コード
h CASCADE
i ON t0.講座コード = t1.講座コード AND t0.開催番号 = t1.開催番号
b←
(1)
cレベル
dジャンル
(2)サブタイプにおいて共通する属性でないから
(3)
年齢層
f ALTER
g 勤務年月日、講師コード
h CASCADE
i ON t0.講座コード = t1.講座コード AND t0.開催番号 = t1.開催番号
2025.10.12 16:09
ネコさん
(No.15)
私はこんな感じになりました
設問1
a: 開催番号(主キーの下線)
b: ←
設問2
(1) c: レベル d: ジャンル
(2)サブタイプ間で定義域制約が異なるから。
(3)e: 年齢層
設問3
f: ALTER
設問4
g: 勤務年月日, 講師コード
h: CASCADE
設問5
i: ON t0.講座コード = t1.口座コード AND t0.開催番号 = t1.開催番号
設問1
a: 開催番号(主キーの下線)
b: ←
設問2
(1) c: レベル d: ジャンル
(2)サブタイプ間で定義域制約が異なるから。
(3)e: 年齢層
設問3
f: ALTER
設問4
g: 勤務年月日, 講師コード
h: CASCADE
設問5
i: ON t0.講座コード = t1.口座コード AND t0.開催番号 = t1.開催番号
2025.10.12 16:12
名無しさん
(No.16)
質問ですが、レベルやジャンルが入って、最大受講者数がcやdに入らないのは何故でしょうか?
2025.10.12 16:13
はは61さん
(No.17)
1 a 開催番号(下線あり) b ←
2 1) c レベル d ジャンル
2) 変更の容易性を高くするため
3) 年齢層
3 f UPDATE (ALTERが正解ですね)
4 g 勤務年月日, 講師コード
5 i ON t0.講師コード = t1.講師コード
回答した通りに書いてみました。
ご指摘いただけると嬉しいです!
2 1) c レベル d ジャンル
2) 変更の容易性を高くするため
3) 年齢層
3 f UPDATE (ALTERが正解ですね)
4 g 勤務年月日, 講師コード
5 i ON t0.講師コード = t1.講師コード
回答した通りに書いてみました。
ご指摘いただけると嬉しいです!
2025.10.12 16:13
はは61さん
(No.18)
追加で
h CASCADE
h CASCADE
2025.10.12 16:14
伝説のスーパーニートさん
(No.19)
楽勝すぎました。
合格確実です。
合格確実です。
2025.10.12 16:18
初受験さん
(No.20)
ねこさんと全く一緒です!
当たってるといいですね!!
当たってるといいですね!!
2025.10.12 16:21
あいさん
(No.21)
cと dって順不同ですよね?
2025.10.12 16:22
あをさん
(No.22)
cascadeか…
あと何故か→の向き間違えた…
あと何故か→の向き間違えた…
2025.10.12 16:25
きょろさん
(No.23)
a 希望日時
c,d レベル、最大受講者数
の気がする
c,d レベル、最大受講者数
の気がする
2025.10.12 16:25
葉っぱさん
(No.24)
16さん
「ビジネス英会話講座」と「日常英会話講座」で、「レベル」「ジャンル」に決まった値を入れたいからです(これが定義域制約です)
最大受講者数は、講座コードによって異なるものなので制限を設ける必要がないです。
「ビジネス英会話講座」と「日常英会話講座」で、「レベル」「ジャンル」に決まった値を入れたいからです(これが定義域制約です)
最大受講者数は、講座コードによって異なるものなので制限を設ける必要がないです。
2025.10.12 16:29
名無しさん
(No.25)
葉っぱさんありがとうございます。
これが2-2の答えにもつながるんですね...
これが2-2の答えにもつながるんですね...
2025.10.12 16:39
ねこさん
(No.26)
i.ON (t0.講座コード, t0.開催番号)=(t1.講座コード,t1.開催番号)
っていう書き方ありますか?
っていう書き方ありますか?
2025.10.12 16:50
応用太郎2さん
(No.27)
> ねこさん
ありますし正しく動きます。
回答として異質ですが失点は無いんじゃないですかね
2025.10.12 16:57
むきおさん
(No.28)
a 開催番号(破線)
b ←
c :レベル
d :ジャンル
(2)従来の構造だとタイプを識別できないから。
e :開始時刻 (わからんかった)
f :ALTER
g :勤務年月日、講師コード
h :ON t0.講座コード = t1.口座コード AND t0.開催番号 = t1.開催番号
どうでしょうか…
b ←
c :レベル
d :ジャンル
(2)従来の構造だとタイプを識別できないから。
e :開始時刻 (わからんかった)
f :ALTER
g :勤務年月日、講師コード
h :ON t0.講座コード = t1.口座コード AND t0.開催番号 = t1.開催番号
どうでしょうか…
2025.10.12 18:53
応用太郎2さん
(No.29)
a 開催番号は実線ですね
受講者は同じ講座を何回でも受けて良いので、この2つのコードでは一意になりません
受講者は同じ講座を何回でも受けて良いので、この2つのコードでは一意になりません
2025.10.12 19:01
さとぅーさん
(No.30)
aの開催番号は破線ですか?下線ですか?賢い人教えて!
2025.10.12 19:39
ましろさん
(No.31)
主キーですね。
外部キーだと同じ講座を複数回予約できないです。
外部キーだと同じ講座を複数回予約できないです。
2025.10.12 20:05
GinSanaさん
★AP プラチナマイスター
(No.32)
おつかれさまです。さきほど公開された問題を見てみました。
設問1
a
開催番号(主キー)
開催スケジュールエンティティから外部参照する上で開催スケジュールの主キーをそのまま受講予約・結果エンティティの主キーにする必要がある。実際には主キー兼外部キーという扱いになる。
b: ←
aの説明の通り、受講予約・結果エンティティに矢印の先を向ける必要がある。同じ時間の講座を複数人に対し設定することは容易に想像がつくだろうということで、1対多。
設問2
(1)
c
レベル
d
ジャンル
(2)にもいえることだが、そもそものスーパータイプ・サブタイプ化の目的は定義域制約を設定することにある。まあ、check制約で別にそのままでも工夫すればできるはできる(※)が、今回はこうしたようである。
※:https://www.db-siken.com/pdf/26_haru/pm1_3.pdf
P24の図5のように工夫をすればできるが、ジャンルの変更の容易性というくだりからこうする必要があったのだろう。ただ、ジャンルの変更の容易性というのなら、これはSQLアンチパターンのサーティーワンフレーバーに当たるとしかいいようがない。ジャンル用のエンティティを用意して、外部参照を張る方がよほどマシである。
(2)
異なる定義域制約を設定する必要があるから
もう少し30字くらい長ければ、「サブタイプごとに異なる定義域制約を設定する必要があるから」とか書いたが、この字数ではこれが限度だろう。
(3)
e
年齢層
P36表1より、ビジネス英会話講座では年齢層を問わないので、日常英会話講座のみ管理すればよい。
設問3
f
ALTER
表定義の変更にはALTERを用いる。
設問4
g
勤務年月日, 講師コード
勤務年月日、講師コードに対して勤務日テーブルから外部参照を張るが、勤務日テーブルには勤務年月日、講師コードしか属性がない。
h
CASCADE
親情報を削除すると、子情報も削除されるようにするには、CASCADEを指定する。CASCADEは結構採用するには勇気がいると思うが。
設問5
i
ON t0.講座コード = t1.講座コード AND t0.開催番号 = t1.開催番号
開催スケジュール(t0)と講座担当割当(t1)の内部結合を考える。WHERE句で指定した年月日において、講師が担当している講座を出すので、主キー同士が対になるように結合する。開催スケジュールエンティティと講座担当割当エンティティが1対1という関係性からも、この導出をする際のヒントになっている。
設問1
a
開催番号(主キー)
開催スケジュールエンティティから外部参照する上で開催スケジュールの主キーをそのまま受講予約・結果エンティティの主キーにする必要がある。実際には主キー兼外部キーという扱いになる。
b: ←
aの説明の通り、受講予約・結果エンティティに矢印の先を向ける必要がある。同じ時間の講座を複数人に対し設定することは容易に想像がつくだろうということで、1対多。
設問2
(1)
c
レベル
d
ジャンル
(2)にもいえることだが、そもそものスーパータイプ・サブタイプ化の目的は定義域制約を設定することにある。まあ、check制約で別にそのままでも工夫すればできるはできる(※)が、今回はこうしたようである。
※:https://www.db-siken.com/pdf/26_haru/pm1_3.pdf
P24の図5のように工夫をすればできるが、ジャンルの変更の容易性というくだりからこうする必要があったのだろう。ただ、ジャンルの変更の容易性というのなら、これはSQLアンチパターンのサーティーワンフレーバーに当たるとしかいいようがない。ジャンル用のエンティティを用意して、外部参照を張る方がよほどマシである。
(2)
異なる定義域制約を設定する必要があるから
もう少し30字くらい長ければ、「サブタイプごとに異なる定義域制約を設定する必要があるから」とか書いたが、この字数ではこれが限度だろう。
(3)
e
年齢層
P36表1より、ビジネス英会話講座では年齢層を問わないので、日常英会話講座のみ管理すればよい。
設問3
f
ALTER
表定義の変更にはALTERを用いる。
設問4
g
勤務年月日, 講師コード
勤務年月日、講師コードに対して勤務日テーブルから外部参照を張るが、勤務日テーブルには勤務年月日、講師コードしか属性がない。
h
CASCADE
親情報を削除すると、子情報も削除されるようにするには、CASCADEを指定する。CASCADEは結構採用するには勇気がいると思うが。
設問5
i
ON t0.講座コード = t1.講座コード AND t0.開催番号 = t1.開催番号
開催スケジュール(t0)と講座担当割当(t1)の内部結合を考える。WHERE句で指定した年月日において、講師が担当している講座を出すので、主キー同士が対になるように結合する。開催スケジュールエンティティと講座担当割当エンティティが1対1という関係性からも、この導出をする際のヒントになっている。
2025.10.12 21:54
がんばろーさん
(No.33)
設問1 a 開催番号(下線つき)
b ←
設問2 (1) c レベル
d ジャンル
(2) 適用すべき値の定義域制約が違うから
(3) e 年齢層
設問3 f CREATE
設問4 g 勤務年月日,講師コード
h 勤務日
設問5 i ON t0.講師コード = t1.講師コード AND t0.開催番号 = t1.開催番号
にしました
設問3.4は全然わからんかった・・・
b ←
設問2 (1) c レベル
d ジャンル
(2) 適用すべき値の定義域制約が違うから
(3) e 年齢層
設問3 f CREATE
設問4 g 勤務年月日,講師コード
h 勤務日
設問5 i ON t0.講師コード = t1.講師コード AND t0.開催番号 = t1.開催番号
にしました
設問3.4は全然わからんかった・・・
2025.10.12 22:26
がんばろーさん
(No.34)
はっ
プラチナマイスターの方が投稿してるの気づかなかった
もしかして結構いけてる・・・?あてずっぽうで書いたのが一個当たってそうでうれしいです(T_T)
プラチナマイスターの方が投稿してるの気づかなかった
もしかして結構いけてる・・・?あてずっぽうで書いたのが一個当たってそうでうれしいです(T_T)
2025.10.12 22:32
まろうさん
(No.35)
設問1
a: 開催番号(実線あり)、b: ←
設問2
(1)c: レベル、d: ジャンル
(2)講座のジャンル変更を容易にするため
(3)e: 年齢層
設問3
f: alter
設問4
g: 勤務年月日, 講師コード、h: cascade
設問5
i: on t0.講座コード=t1.講座コード and t0.開催番号=t1.開催番号
a: 開催番号(実線あり)、b: ←
設問2
(1)c: レベル、d: ジャンル
(2)講座のジャンル変更を容易にするため
(3)e: 年齢層
設問3
f: alter
設問4
g: 勤務年月日, 講師コード、h: cascade
設問5
i: on t0.講座コード=t1.講座コード and t0.開催番号=t1.開催番号
2025.10.12 22:51
ぬいさん
(No.36)
設問5
USING(講座コード、開催番号)
でも正解ですかね…?
USING(講座コード、開催番号)
でも正解ですかね…?
2025.10.12 23:34
カリキュラムさん
(No.37)
結合条件1つだけだと途中点もらえませんかね、、
2025.10.13 08:07
おすしちゃんさん
(No.38)
No.15ネコさんとほぼ同じです。
設問2(2)の記述は「定義域」というワードが思いつかず
「サブタイプ毎にとりうる値が異なるため」と回答してしまいました。
中間点ももらえず×ですかね‥
設問2(2)の記述は「定義域」というワードが思いつかず
「サブタイプ毎にとりうる値が異なるため」と回答してしまいました。
中間点ももらえず×ですかね‥
2025.10.13 10:13
まつもとさん
(No.39)
iの回答をON t0.開催番号 = t1.開催番号
としてしまったのですが、部分点もらえますかね?
としてしまったのですが、部分点もらえますかね?
2025.10.13 11:21
すずぞうさん
(No.40)
この投稿は投稿者により削除されました。(2025.10.14 00:38)
2025.10.14 00:38
すずぞうさん
(No.41)
設問4の空欄gのところ、
問題文の[ g ]の枠がどう見ても1単語しか入らなそうな幅だったので
最初は「勤務年月日、講師コード」と書いたのを
イチかバチかで「勤務年月日」だけに書き直しました。(笑)
やっちまったと思います。
問題文の[ g ]の枠がどう見ても1単語しか入らなそうな幅だったので
最初は「勤務年月日、講師コード」と書いたのを
イチかバチかで「勤務年月日」だけに書き直しました。(笑)
やっちまったと思います。
2025.10.14 00:38
saburoさん
(No.42)
開催番号は一意なはずだから開催番号だけで問題ない気はする
2025.10.14 01:16
ななしさん
(No.43)
cascadeのスペル分からんくて焦ってたけど、問題文のDROPの後ろの方に書いてあって有難かった。
それはそうと開催番号の下線付け忘れた気がするなぁ・・・。
それはそうと開催番号の下線付け忘れた気がするなぁ・・・。
2025.10.14 09:44
ぷうたろうさん
(No.44)
設問1
a:開催番号(主キー)
b:←
設問2
(1)
c:レベル
d:ジャンル
(2)
定義域(ドメイン)が異なる為
定義域(ドメイン)が浮かばなかった場合は、「取りうる値が異なる為」とかでもよいかと思います。
(3)
e:年齢層
設問3
f:ALTER
設問4
g:勤務年月日,講師コード
h:CASCADE
設問5
i:ON t0.講座コード = t1.講座コード AND t0.開催番号 = t1.開催番号
「USING(講座コード,開催番号)」でも正解になると思います。
スーパタイプとサブタイプについて
スーパタイプ:サブタイプ間で共通となる属性を管理
サブタイプ:サブタイプ間で排他的な(異なる)属性を管理
※スーパタイプとサブタイプ間は1:1となる為、基本的には主キーは同じ
(まれに主キー:外部キーで1:1となる場合もあり)
今回、レベル及びジャンルは属性の名称としては同じ為、スーパタイプで管理すればよいかと思わせていますね。
が、それぞれの定義域(データとして持つ値のルール)が異なる為、名称は同じであれど意味合いが異なる属性となっており、サブタイプに持たせる必要がある事になります。
という事で、c、dはレベルとジャンルとなります。
が、「GinSanaさん」がおっしゃるようにこの問題の仕様には疑問が残ります。
この場合、レベルとジャンルをサブタイプに置くのは問題ないのですが、
「ビジネスレベル」、「日常レベル」「ビジネスジャンル」、「日常ジャンル」
の各々のエンティティを作成し、それぞれに参照制約を設定したほうがよいと個人的には思います。(この場合は参照先にデータがあればよい為、check制約は不要となる)
少なくとも日常英会話講座のジャンルについては変更の可能性ありと記述しているのであれば、「日常ジャンル」エンティティを作り、参照制約を設定するべきである。
ジャンルが変更される度に、ALTER TABLEを実行するの???という話になる。
a:開催番号(主キー)
b:←
設問2
(1)
c:レベル
d:ジャンル
(2)
定義域(ドメイン)が異なる為
定義域(ドメイン)が浮かばなかった場合は、「取りうる値が異なる為」とかでもよいかと思います。
(3)
e:年齢層
設問3
f:ALTER
設問4
g:勤務年月日,講師コード
h:CASCADE
設問5
i:ON t0.講座コード = t1.講座コード AND t0.開催番号 = t1.開催番号
「USING(講座コード,開催番号)」でも正解になると思います。
スーパタイプとサブタイプについて
スーパタイプ:サブタイプ間で共通となる属性を管理
サブタイプ:サブタイプ間で排他的な(異なる)属性を管理
※スーパタイプとサブタイプ間は1:1となる為、基本的には主キーは同じ
(まれに主キー:外部キーで1:1となる場合もあり)
今回、レベル及びジャンルは属性の名称としては同じ為、スーパタイプで管理すればよいかと思わせていますね。
が、それぞれの定義域(データとして持つ値のルール)が異なる為、名称は同じであれど意味合いが異なる属性となっており、サブタイプに持たせる必要がある事になります。
という事で、c、dはレベルとジャンルとなります。
が、「GinSanaさん」がおっしゃるようにこの問題の仕様には疑問が残ります。
この場合、レベルとジャンルをサブタイプに置くのは問題ないのですが、
「ビジネスレベル」、「日常レベル」「ビジネスジャンル」、「日常ジャンル」
の各々のエンティティを作成し、それぞれに参照制約を設定したほうがよいと個人的には思います。(この場合は参照先にデータがあればよい為、check制約は不要となる)
少なくとも日常英会話講座のジャンルについては変更の可能性ありと記述しているのであれば、「日常ジャンル」エンティティを作り、参照制約を設定するべきである。
ジャンルが変更される度に、ALTER TABLEを実行するの???という話になる。
2025.10.14 14:40
ぷうたろうさん
(No.45)
自己レス
「ジャンルが変更される度に、ALTER TABLEを実行するの???」
は、正しくは
「ジャンルが変更される度に、ALTER TABLEかALTER DOMAINを実行するの???」
となります。
「ジャンルが変更される度に、ALTER TABLEを実行するの???」
は、正しくは
「ジャンルが変更される度に、ALTER TABLEかALTER DOMAINを実行するの???」
となります。
2025.10.14 15:13
Nagi_nさん
(No.46)
デスぺ受けてきたついでにこっちも解いてきました。
設問1
a:開催番号(主キーの下線)
b:←
開催スケジュールと受講者の組み合わせがないとわからない情報を保管するのが受講予約・結果エンティティ。(いわゆる連関エンティティ。矢印が向かれる)
両方の主キーがわからないと1つに特定できないため、開催番号は主キーにしました。
設問2
(1)
c:レベル
d:ジャンル
(2)
それぞれが別の属性や定義域を持つため。(19字)
(3)
e:年齢層
スーパータイプで全体として共通となる講座名などの属性がそのまま残る(図2で省略されているのは、講座コード(主キー)、講座名、講座概要、最大受講者数、講座区分)。ただしレベル、ジャンルはサブタイプごとに定義域が異なるため、それぞれ固有の属性ととらえる。(2)は定義域が異なることとe:年齢層の属性のあるなしについて記述しました。
問3
f:ALTER
問4
g:勤務年月日,講師コード
h:CASCADE
問5
i:ON t0.講師コード = t1.講師コード AND t0.開催番号 = t1.開催番号
問3・5はテーブル書き換えと結合の構文知識。
問4は参照制約。勤務日の複合主キー{勤務年月日,講師コード}を参照。
上のエンティティが消えれば下も消えるのがCASCADE。
設問1
a:開催番号(主キーの下線)
b:←
開催スケジュールと受講者の組み合わせがないとわからない情報を保管するのが受講予約・結果エンティティ。(いわゆる連関エンティティ。矢印が向かれる)
両方の主キーがわからないと1つに特定できないため、開催番号は主キーにしました。
設問2
(1)
c:レベル
d:ジャンル
(2)
それぞれが別の属性や定義域を持つため。(19字)
(3)
e:年齢層
スーパータイプで全体として共通となる講座名などの属性がそのまま残る(図2で省略されているのは、講座コード(主キー)、講座名、講座概要、最大受講者数、講座区分)。ただしレベル、ジャンルはサブタイプごとに定義域が異なるため、それぞれ固有の属性ととらえる。(2)は定義域が異なることとe:年齢層の属性のあるなしについて記述しました。
問3
f:ALTER
問4
g:勤務年月日,講師コード
h:CASCADE
問5
i:ON t0.講師コード = t1.講師コード AND t0.開催番号 = t1.開催番号
問3・5はテーブル書き換えと結合の構文知識。
問4は参照制約。勤務日の複合主キー{勤務年月日,講師コード}を参照。
上のエンティティが消えれば下も消えるのがCASCADE。
2025.10.14 17:01
Chinさん
(No.47)
質問失礼します。
設問5の「i」のONの左辺と右辺の順番は決まってますか?
ON t1.講師コード = t0.講師コード AND t1.開催番号 = t0.開催番号
とすると不正解でしょうか?
設問5の「i」のONの左辺と右辺の順番は決まってますか?
ON t1.講師コード = t0.講師コード AND t1.開催番号 = t0.開催番号
とすると不正解でしょうか?
2025.10.15 11:55
ゼロトラストさん
(No.48)
さすがに正解だと思う(部分点じゃなくて正解)
2025.10.15 12:10
Chinさん
(No.49)
ゼロトラストさん
有難うございます。
有難うございます。
2025.10.15 12:22
つらいさん
(No.50)
問4のgについて、
「講師コード」しか書かなかったんですけど部分点もらえます?
「講師コード」しか書かなかったんですけど部分点もらえます?
2025.10.16 15:41
赤理さん
(No.51)
今回ってデータベースだけ難しかったりしたんですかね...?
他4科目は6割あったのに、データベースだけ25%だったんです...。
調整入ったりしないですかね...
他4科目は6割あったのに、データベースだけ25%だったんです...。
調整入ったりしないですかね...
2025.10.17 09:04
広告
返信投稿用フォーム
投稿記事削除用フォーム
広告