このツールは、uIdとgroupIdの組み合わせに複数のエントリが存在する可能性があることを示しているだけです。例:
uId groupId performacesScore 1 1 10 1 2 20 2 1 30 2 1 30 2 1 40 2 2 20
ここで、このデータが表示され、最初の2/1/30を2/1/50にするとします。ツールがdbmsに送信できる更新ステートメントは何ですか?
update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1;
これにより、1つではなく3つのレコードが更新されます。
update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1 and performacesScore = 30;
これでも、1つではなく2つのレコードが更新されます。
したがって、適切に更新および削除するには、レコードを一意にする理由をdbmsに通知する必要があります。 4つの可能性があります:
- 単一のレコードを更新または削除したくない場合は、そのままにしておきます。
- 更新できるようにしたいが、uIdとgroupIdの組み合わせのエントリが1つしかない場合は、dbmsにそのように指示し、uIdとgroupIdをテーブルの主キーにします。
- 更新できるようにし、uId-groupIdの組み合わせが重複する可能性があるが、uId-groupId-performacesScoreの組み合わせは常に一意である場合は、これら3つをテーブルの主キーにします。
- 更新できるようにしたい場合で、任意の組み合わせで重複する可能性がある場合は、テーブルにテクニカルIDの別の列を指定し、これを主キーにします。