1. 複数のレコードに適用されるフィールドの独立したテーブルを作成します
2. これらのテーブルの値を外部キーで関連付けます
後から更新データを心配することなく追加できるように、URLの値を独立したテーブルに置きます重複した値について。また、主キー値を介してこれらのフィールドを関連付けます:
users
userId name company company_address
1 Joe ABC 1 Work Lane
2 Jill XYZ 1 Job Street
urls
urlId relUserId url
1 1 abc.com
2 1 x yz .com
3 2 abc.com
4 2 xyz.com
上に示したように、別のテーブルを作成し、users テーブルの主キー userid が url テーブルの外部キー relUserId に関連付けられるようになりました。現状はかなり改善されているようです。しかし、ABC 社に従業員レコードを追加したい場合はどうすればよいでしょうか?それとも200以上?この方法では、会社名と住所を再利用する必要がありますが、明らかに十分な冗長性がありません。したがって、第 3 レベルの正規化方法を適用します:
第 3 レベルの正規化フォーム
1. キーに依存しないフィールドを削除します
会社名と住所はユーザー ID とは関係がないため、独自のものが必要です。 company Id:
users
userId name relCompId
1 Joe 1
2 Jill 2
companies
compId company company_address
1 ABC 1 Work Lane
2 XYZ 1 Job Street
urls
urlId rel UserId url
1 1 abc.com
2 1 xyz .com
3 2 abc.com
4 2 xyz.com
このようにして、ABC companyが追加された場合でも、 Companies テーブルの主キー comId を users テーブルの relCompId という外部キーに関連付けます。
従業員は200人ですが、会社に記録は1件しかありません。ユーザー テーブルと URL テーブルは、不必要なデータの挿入を心配することなく、継続的に増加する可能性があります。ほとんどの開発者は、3 つの手順で形式化すれば十分であり、このデータベースの設計は企業全体の負担に簡単に対処できると考えています。この考えはほとんどの場合正しいです。 |
本当