アプリ版:「スタンプのみでお礼する」機能のリリースについて

成績管理DBを作っています。わからないことがあるので教えてください。

Aテーブル
No(主キー)
名前
住所
TEL
成績

とあります。

「成績」レコードですが、これまでの履歴もちゃんと保存していきたいと考えております。

その場合、もう一つ下記のようなテーブルを作ってみました。

Bテーブル
ID(とりあえず主キーを設定するため)
No.
国語
数学
理科
社会

AテーブルとBテーブルの「No.」でリレーションシップを設定。

質問なんですが、こんな(変な)やり方でいけるでしょうか?別の効率のよい方法があったら教えてください。

※テーブルの概念を言葉で伝えるのは本当に難しいですね。補足がありましたら入れてください。

A 回答 (3件)

すいません。

#1のangbandです。

もし試しに作られるのでしたら、Cテーブルに、Bテーブル
のIDが必要です。抜けてました。

正規化はちょっとややこしいかもしれませんが、
簡単に説明してみます。

第一正規形にするという場合は、要するに1レコードに
繰り返す値があってはだめ、ということです。点数や
教科は生徒一人あたり複数でてくる項目なので分けましょう
というのが第一正規化です。さらにぶっちゃけていえば
生徒一人あたり1つしかないもの(名前、生年月日など)
はあってもOKです。生徒一人に複数あるものは別テーブル
へというのが第一正規化ですね。
ここまでだけでも教科が増えたり、テスト回数が増えても
OKになっていますね。

第二正規化は、レコードを縦に見て、IDや数値以外で
同じものがあってはだめということです。他のテーブルの
IDや、テストの点数、年齢などは同じでも仕方ないです。

第三正規化は、レコードごとに比較してみて、レコード内
に連動して変化する値があってはだめ、ということです。
具体的には今回ならば、もし郵便番号と住所などがあれば
それが第三正規化でひっかかります。なぜこれがだめなの
かというと、生徒に兄弟がいる場合などに同じ住所に
なる場合があるはずです。となれば生徒と住所は1対1の
関係になく、1住所に複数の生徒が対応しているという
ことなので、テーブルをわけるべきだということなのです。

正規化の説明って難しいですね・・
    • good
    • 0
この回答へのお礼

再回答ありがとうございます。いま鋭意製作中なんですが難しいですね^^;。正規化の意味を理解したつもりなんですが、リレーションを作成するとどうしても思うように動かないんですよね。No2の方の方法もいい線行くんですが、多少思惑とずれたりします。

まだがんばってやってみたいと思います。必ずご報告致します。

お礼日時:2003/09/18 22:52

一つにまとめて


名前
住所
Tel
実施日
国語
算数
理科
社会
成績
テーブルにします。直感的にわかりやすいでしょう。
データが増えてきたら、これをアクセスの正規化にかけます。
すると、#1のような正規化されたテーブルが出来上がります。

この方法は、正規化がわかりにくい人にとって便利です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。とても参考になりました。
そんな方法は知りませんでした。

まだ検証できてないので検証次第、返信申し上げます。

お礼日時:2003/09/17 22:45

ちょっときついと思います。



お勧めは「正規化」というキーワードでgoogleで調べて
みてください。おそらくそこに答えがあります。テーブル
は誰が作ってもほぼ同じ構造になるルールがあります。

一案ですが、
-----------------------------------------------
Aテーブル:生徒名簿
ID
kana
lname:姓
fname:名
などの生徒固有の情報をAテーブルへ
-----------------------------------------------
Bテーブル:教科テーブル
ID
name:教科名
-----------------------------------------------
Cテーブル:テストテーブル
ID
date:実施日
name:テスト名(中間、期末など)
min:最低点
avg:平均点
max:最高点
-----------------------------------------------
Dテーブル:生徒テスト成績テーブル
ID
AのID
BのID
CのID
num:テストの成績
-----------------------------------------------
のようにすれば何年でも使えますし、一応正規化できて
ますね。必要な項目が分かればもっと正しい正規化が
できると思いますよ!がんばってくださいね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
すばらしいテーブル構成ですね。まだ私には理解できない部分があります。作ってこれから検証しようと思います。

正規化をかじってみましたが、どんどんむずかしくなるのですね。

>誰が作ってもほぼ同じ構造になるルールがあります

そんなことも知らずデータベースを作っていました。面白いことを聞きました。

まだ検証中なので検証できたら再回答したいと思います。

お礼日時:2003/09/17 22:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す