0

PHP [学生の出席システムの処理] でプロジェクトに取り組んでいます。ID [jntuno] とともに学生のリストがあり、各科目の各学生の毎日の出席を保存するために、mysql にデータベースを作成する必要があります。したがって、この方法でテーブルを作成しました。

テーブル :students

田畑:

slno int(5) auto increment,
jntuno char(15),
name char(50),
primary key(slno,jntuno).

データ:

学生テーブルのデータ

このstudentsテーブルには、学生とその ID のリストが保持されます

今、私は別のテーブルを作成しました:

テーブル:dailyatt

田畑:

date date,
subject char(10),
classesconducted int(2),
`11341A0501` int(2),
`11341A0502` int(2),
`11341A0503` int(2),
.
.
.
`11341A0537` int(2),
primary key(date,subject).

この表は次のようになります。

+------------+-----------+-----------------+------------+-----------+-----------+
|date        |subject    |classesconducted |11341A0501  |11341A0502 |11341A0503 |....
+------------+-----------+-----------------+------=-----+-----------+-----------+
|            |           |                 |            |           |           |

現在、毎日 PHP Web サイトに出席を入力すると、その日に教えられた科目ごとに新しい行が作成されます。

しかし、多くの人がデータベース モデルは良くないと言います...
このデータベース構造のどこが悪いのでしょうか?

それで、誰かがこの種の問題のためのより良いモデルを私に提案できますか?

4

2 に答える 2

4

あなたの学校で 200 人の生徒が提供されているイメージ。2 番目のテーブルには 200 以上の列があります。2 つのテーブルに分割する必要があります。1 つは学校で提供されるすべてのクラス用で、もう 1 つは実際の出席記録用です。

「クラス」テーブル

ここに画像の説明を入力

「出席表」

ここに画像の説明を入力

次に、それらを一緒に結合します。

SELECT student_id, class_name, date, class_attended
FROM attendance AS ABB2
    LEFT JOIN classes AS ABB1 ON ABB1.id = ABB2.class_id 
于 2013-10-06T10:31:28.463 に答える