平成22年春期午後問3
論理演算子さん
(No.1)
https://www.fe-siken.com/kakomon/22_haru/pm03.html
すみません。データベース設計の設問1のa,b,cについて分かりやすく解説お願いします。
すみません。データベース設計の設問1のa,b,cについて分かりやすく解説お願いします。
2021.07.14 21:31
GinSanaさん
★FE シルバーマイスター
(No.2)
この投稿は投稿者により削除されました。(2021.07.15 08:23)
2021.07.15 08:23
GinSanaさん
★FE シルバーマイスター
(No.3)
aは
科目IDが増えたかどうかでレコードの一意になる決まり方が変わるわけです。
DBに主キー(プライマリキー)を制約で設定すると、主キーが同じレコードは1つしかいられなくなるわけですが、
案Aだと生徒番号、年度、試験IDなので
教科をいちいち列(カラム)に持たせないといけません。悪い設計ですな。
教科が増えたらALTER TABLEで列追加とか列削除とかするの?って話になりますが、こういう横持ち(列持ち)って言われてるやつは、管理が非常に大変なんです。
b-kimagure.hatenablog.com/entry/2019/05/25/112530
やめた方がいいテーブル設計 〜重複データのカラム持ち〜
その点Bにはそれがない。
というわけで試験科目の増減が答えです。
bとcは
https://www.fe-siken.com/bbs/3335.html
を読んでください。結構同じ質問があるんですよね。
科目IDが増えたかどうかでレコードの一意になる決まり方が変わるわけです。
DBに主キー(プライマリキー)を制約で設定すると、主キーが同じレコードは1つしかいられなくなるわけですが、
案Aだと生徒番号、年度、試験IDなので
教科をいちいち列(カラム)に持たせないといけません。悪い設計ですな。
教科が増えたらALTER TABLEで列追加とか列削除とかするの?って話になりますが、こういう横持ち(列持ち)って言われてるやつは、管理が非常に大変なんです。
b-kimagure.hatenablog.com/entry/2019/05/25/112530
やめた方がいいテーブル設計 〜重複データのカラム持ち〜
もし、4人目を登録する必要が出てきた場合は、テーブルに列を追加する対応となります。
そして、テーブルへの列の追加は、コストの大きな改修となることが多いです。
なぜなら、テーブルを変更した場合、テーブルに合わせて、テーブルへの登録更新箇所および、テーブル参照を行なっている箇所のすべてのSQLおよび、 SQLを使用しているすべての機能の見直しが必要になるためです。
nullによるデータ保持
データを列持ちで定義した場合、必ず列の数だけデータが作られます。
しかし、登録するデータによっては、あらかじめ用意した列より少ない列で良い場合があります。
もし、あらかじめ用意した列より少ない列で十分な場合、残りの列にはnullが設定されることとなります。
そのため、列持ちでデータを定義した場合、不要なnullデータが登録されてしまいます。
結果として、システム側で、取得データごとにnullのチェックが必要となります。
そして、テーブルへの列の追加は、コストの大きな改修となることが多いです。
なぜなら、テーブルを変更した場合、テーブルに合わせて、テーブルへの登録更新箇所および、テーブル参照を行なっている箇所のすべての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と一緒にでてくるパターンが多いのですね。
データベース設計もSQLと一緒にでてくるパターンが多いのですね。
2021.07.17 12:34
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告