データベースを扱った私の経験では、日付は主キーのフィールドを非常に貧弱にします。私がそれらに遭遇するたびに、アプリケーションがどのようにプログラムされていても、日付であなたを噛む何かが常にありました。ほとんどの場合、「日付を誤って入力したので、変更したいのですが、12個の子テーブルを更新しないとできません」または「日付を修正してソフトウェアが再送信したため、データベースがデータを複製しただけです。レポートし、それが重複していることを示す方法はありません。」
さらに、日付が実際に一意であるとは限らないことを覚えておく必要があります。簡単な例として、夏時間のために時計を戻すとどうなりますか?突然、午前1時が2回発生する日付があります。これは、日付が2つのインスタンスで衝突する可能性があるという正当な状況がすでに発生していることを意味します。ソリューションによっては、タイムゾーンが使用されていること、またはUTCが指定されていることを確認する必要がある場合があります。UNIXタイムスタンプを使用してこの問題を回避することもできますが、それでも、時間を正しく追跡して現実に同意するために、2つの異なる無関係のコンピューターシステムに依存しています。
同様に、IPアドレスはグローバルに一意である必要はありません。プライベートIPアドレッシングとNATは、2つのシステムが同じIPアドレスを持つシナリオを簡単に構築できます。実際、関係するすべてのシステムのシステム管理者でない限り、ホスト名、IPアドレス、MACアドレス、さらにはBIOSシリアル番号を確実に使用して、一意の値が保証されることを期待することはできません。これが、システムBIOSがシステムのGUIDを持っていることが多い理由です(ただし、再生されたシステムボードのGUIDがすべてゼロになる場合があるので、これも確実ではありません)。
これらの両方のフィールドの複合キーを使用することを選択した場合、両方の世界で最悪の事態が発生する可能性があります。
あなたが非常に小さなシステムで作業していることを理解しており、これらの問題が発生する可能性は低いですが、システムアナリストとして、特にデータが複数の独立したソースから来ています。