4

私は、従業員と学生の両方に対応する学校への出席システムを開発しています。

現在のdbスキーマは

attendanceテーブル

id - primary key for this table
daydate  int(11) - stores timestamp of current day
timing_in varchar(18) - Start time for institution
timing_out - Closing time for institution
status - Status for the day, can be working day - 1 or holiday - 2

次に、実際の出席値を格納するスタッフと学生用のさまざまなテーブルがあります。

スタッフの場合、出席はに保存されattendance_staffます。データベーススキーマは

attendance_id - foreign key, references attendance table
staff_id - id of staff member, references staff master table
time_in - stores in timing of a staff member
time_out - stores out timing of a staff member
status - attendance status - can be one among the list, like present, absent, casual leave, half day, late mark, on duty, maternity leave, medical leave etc

スタッフのために、私はテーブルに存在するエントリと存在しないエントリの両方を保存しています。

今、学生の出席はそれに含まれている必要があります。

毎日のステータスはすでにテーブルに保存されているのでattendance、各学生の現在価値を学生出席テーブルに保存できますか。

同様に、学生出席テーブルには、特定の日に出席していない日のエントリのみが保存されます。

のスキーマattendance_student

attendance_id - references attendance table
student_id - references student table
status - will be leave / absent etc other than present.

外部結合を使用して出席テーブルから現在の日数を計算するのは効率的ですか?

前もって感謝します。

4

1 に答える 1

2

学生の出席を計算するために外部結合は必要ありません。出席テーブルのレコードを単純にカウントし (すべての学生に同じであるため、1 回)、学生の出席テーブルから欠席を選択するだけです。

外部結合で出席をカウントしたい場合は、可能です。出席テーブルの主キーと、学生の出席テーブルから出席テーブルへの外部キーにインデックスがある場合、十分に効率的である可能性があります。

于 2012-12-31T19:55:22.800 に答える