2010-12-07 8 views
1

デーモンは、現在施設にチェックインされているユーザーのリストを毎分返します。入退室には、スマートカードを使用する必要があります。物理アクセスログ - SQLデータベース設計

最終的な解決策では、どのユーザーがどのくらいの時間チェックインされたかを確認する必要があります。

私の質問は:より良い にそれはありますa)は、いくつかのロジックをプログラムの開発)SQLデータベースの1つのテーブルにデーモンの生の出力をログに記録し、生データに基づいて、必要に応じてすべてのロジックを実行する、または Bデーモンには、SQLのエントリは何かが変更されたときにだけ生成されるように?

(私は現時点で傾向がある)2番目のケースでは、SQLテーブルをどのように構築する必要がありますか?

a)すべての一意のユーザーの1つのテーブル(表示された場合はユーザーを追加する必要があります)リスト チェックイン時間||チェックアウト時間||継続時間

b)1つのテーブルのみ ユーザー||チェックイン時間||チェックアウト時間||継続時間

c)ユーザテーブルとリンク時刻ロギングテーブル ユーザ||ブール値(チェックイン)

ユーザーID ||チェックイン時間||チェックアウト時間||期間

誰がどのように入手可能な情報に基づいて将来の警告

+0

CDC用でない限り、緊急エスケープの要件ではカードキーのない建物を出ることはできません。 –

+0

@OMGポニー:あなたは*が許すことを意味しますか? –

+0

ジョーが一緒に働いているので、ジョーがドアを開いたままにして、ジャックが歩いていくとどうなりますか? –

答えて

1

を避けるために、このようなシナリオを設計する経験、オプションBを持っていますが)私の票を取得します。

RDBMSで可能な場合は、Durationを計算列にすることを検討してください。 Microsoft SQL Serverの場合は、次のようになります。

create table SecurityLogging (
    UserId int, 
    CheckInTime datetime, 
    CheckOutTime datetime, 
    Duration as datediff(minute, CheckInTime, CheckOutTime) 
) 
+0

ありがとうございます。 「保留中」のエントリ(入力済みでまだ内部)を処理する方法を見なければなりません。しかし、私は何かを理解するでしょう。 MySQL上で動作します – user334287

関連する問題