ホームページ >バックエンド開発 >PHPチュートリアル >データベース設計スキル(2)_PHPチュートリアル
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が
200を追加した場合でも、companiesテーブルの主キーcomIdをusersテーブルのrelCompIdという外部キーに関連付けます。従業員、企業内 にはレコードが 1 つだけあります。ユーザー テーブルと URL テーブルは、不必要なデータの挿入を心配することなく、継続的に増加する可能性があります。ほとんどの開発者は、3 つの手順で形式化すれば十分であり、このデータベースの設計は企業全体の負担に簡単に対処できると考えています。この考えはほとんどの場合正しいです。
URL のフィールドに注目してみましょう - データの冗長性に気づきましたか?ユーザーがこれらの URL データを入力できる HTML ページが任意に入力できるテキスト
ボックスの場合は問題ありませんが、ドロップを通じて 2 人のユーザーが同じお気に入りを入力する可能性は低くなります。 -down メニュー、
ユーザーに 2 つの URL から入力するか、それ以上の URL を選択してもらいます。この場合、データベースは次のレベルの最適化 (4 番目のステップ) も行うことができます。ほとんどの開発者にとって、このステップは無視されます。これは、このステップが非常に特殊な関係 (これまで遭遇したことのない多対多の関係) に依存しているためです。私たちのアプリケーションで。
http://www.bkjia.com/PHPjc/631071.html
www.bkjia.com
true