0

私は次の3つのテーブルを持ってい
ます

--------------------------------
ID StartDate   EndDate      Type
--------------------------------
1  2013-01-01   2013-01-01    D
2  2013-01-02   2013-01-02    D

出席

---------------------------------------------------
ID PeriodID   UploadedBy   uploadDateTime    Approved
--------------------------------------------------
1      1        25          2013-01-01-11:00   1
2      1        54          2013-01-01-10:00   1

出席詳細

---------------------------------------------
ID EmployeeID   AttendanceTime   Status AttendanceID
---------------------------------------------
1      24       2013-01-01 09:05  CheckIn   1
1      28       2013-01-01 09:08  CheckOut  2

出席データは、バイオマトリック加工で生成された CSV ファイルを通じて入力されます。Attendancedetail従業員ごとに 1 日に複数のチェックインがあるため、時間の経過とともにグループ化される可能性があります。出席は期間ごとに承認されますperiod

質問

期間ごとの出席データが必要です。私はこれを達成できることを知っていますjoins。しかしbetween、AttendenceTime でフィルターを使用する必要があります。 クエリと将来のパフォーマンスの問題を簡素化するために、テーブルにもPeriodID追加することを考えていました。AttendenceDetail私はそれに行くべきですか、それともより良い解決策が利用可能です

4

1 に答える 1

0

期間ごとに出席の詳細が必要になることが多いため、通常は 3 つのテーブルを結合する必要がありますが、出席データ (出席テーブルから) はそれほど重要ではありません。出席の詳細テーブルの PeriodID が確実に役立ちます。

3 つのテーブルすべてが必要な場合でも、PeriodID の where 条件は、出席の詳細から行数を絞り込むため、パフォーマンスの点で再び役立ちます。

完全に正規化されていないスキーマを維持するのは少し面倒かもしれませんが、それがそれほど面倒ではなく、これが執筆パフォーマンスに影響しない場合は、出席詳細の PeriodID を使用してください。あなたの選択はあなたに感謝します:)

于 2013-10-09T23:00:18.597 に答える