HOME»基本情報技術者試験掲示板»平成22年春期午後問3
投稿する

[3486] 平成22年春期午後問3

 論理演算子さん(No.1) 
https://www.fe-siken.com/kakomon/22_haru/pm03.html
すみません。データベース設計の設問1のa,b,cについて分かりやすく解説お願いします。
2021.07.14 21:31
GinSanaさん(No.2) 
FE シルバーマイスター
この投稿は投稿者により削除されました。(2021.07.15 08:23)
2021.07.15 08:23
GinSanaさん(No.3) 
FE シルバーマイスター
aは
科目IDが増えたかどうかでレコードの一意になる決まり方が変わるわけです。
DBに主キー(プライマリキー)を制約で設定すると、主キーが同じレコードは1つしかいられなくなるわけですが、
案Aだと生徒番号、年度、試験IDなので
教科をいちいち列(カラム)に持たせないといけません。悪い設計ですな。
教科が増えたらALTER TABLEで列追加とか列削除とかするの?って話になりますが、こういう横持ち(列持ち)って言われてるやつは、管理が非常に大変なんです。

b-kimagure.hatenablog.com/entry/2019/05/25/112530
やめた方がいいテーブル設計  〜重複データのカラム持ち〜
もし、4人目を登録する必要が出てきた場合は、テーブルに列を追加する対応となります。
そして、テーブルへの列の追加は、コストの大きな改修となることが多いです。

なぜなら、テーブルを変更した場合、テーブルに合わせて、テーブルへの登録更新箇所および、テーブル参照を行なっている箇所のすべてのSQLおよび、 SQLを使用しているすべての機能の見直しが必要になるためです。

nullによるデータ保持
データを列持ちで定義した場合、必ず列の数だけデータが作られます。
しかし、登録するデータによっては、あらかじめ用意した列より少ない列で良い場合があります。

もし、あらかじめ用意した列より少ない列で十分な場合、残りの列にはnullが設定されることとなります。
そのため、列持ちでデータを定義した場合、不要なnullデータが登録されてしまいます。
結果として、システム側で、取得データごとにnullのチェックが必要となります。

その点Bにはそれがない。
というわけで試験科目の増減が答えです。
bとcは
https://www.fe-siken.com/bbs/3335.html
を読んでください。結構同じ質問があるんですよね。

2021.07.15 08:26
 論理演算子さん(No.4) 
ご丁寧な解説ありがとうございます。
データベース設計もSQLと一緒にでてくるパターンが多いのですね。
2021.07.17 12:34

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop