しかし、多くの動物が同じ国から来ている可能性があり、たとえばたくさんのトラがいる可能性があるため、そこには重複データが存在します。
これは、動物の種類だけでなく、個々の動物を追跡する必要があることを示唆しています。動物園がある種の数字のタトゥーやマイクロチップを使用して個々の動物を識別すると仮定しましょう。
このサンプル データは代表的なものであると仮定します。(そうではありませんが、教えるのには問題ありません。)
Animals
Predicate: Animal having microchip <chip_num> of species <species>
has name <name> and was born in <birth_country_code>.
chip_num name species birth_country_code
--
101234 Anita Panthera tigris USA
101235 Bella Panthera tigris USA
101236 Calla Panthera tigris USA
101237 Dingo Canis lupus CAN
101238 Exeter Canis lupus CAN
101239 Bella Canis lupus USA
101240 Bella Canis lupus CAN
そのテーブルには冗長なデータはありません。そのテーブルの意味を根本的に変えることなく、これらの列を削除することはできません。これには単一の候補キー (chip_num) があります。5NFです。
非キー列で値が繰り返されます。これは、非キー (非プライム) 列の定義のようなものです。キー列 (またはキー列のセット) の値は一意です。非キー列の値はそうではありません。
「birth_country_code」の値を有効な 3 文字の ISO 国コードに制限する場合は、有効な 3 文字の ISO 国コードのテーブルを追加し、外部キー参照を設定できます。これは一般的に良いことですが、正規化とは関係ありません。
iso_country_code
--
CAN
USA
「種」についても同じことができます。それも一般的には良いことであり、正規化とは何の関係もありません.