私はしばらくの間SQLデータベースのクエリに取り組んできましたが、実際に優れたテーブルを作成するのはまだかなり初心者です。私がよく苦労することの1つは、主キーを使用することです。
一部の警報装置のエラーをログに記録するために現在作成しているテーブルでは、5つの列が必要です。park
and列はcode
、サイトを一意に識別します(ただし、park
列はatm。使用されていません)。次にserial
、問題の機器を識別する列とerror
、エラーコードを含む列があります。最後にtimestamp
、エラーがログに記録されるときのforがあります。
各サイトにはいくつかの異なる機器があり、機器によっていくつかのエラーが報告される場合があります。エラーが修正されると、その行はテーブルから削除されます。
したがって、エラーを一意に識別するには、、、、およびをチェックする必要park
がありcode
ます。これらはすべて、実行される可能性のあるクエリに基づくインデックスの適切な候補のようです。ただし、これらすべてを結合された主キーとして定義することは私には正しくないようです。結局のところ、これらはテーブル内のほぼすべての列です。serial
fault
私は何度か同様の問題に苦しんでいますが、良い解決策を見つけたとは感じたことはありません。行を一意に識別するためにほとんど(またはすべて)の列が必要な、このようなテーブルのいくつかの良い方法を誰でも提案できますか?