ホームページ >php教程 >php手册 >データベース設計スキル (1)

データベース設計スキル (1)

WBOY
WBOYオリジナル
2016-06-21 09:05:13998ブラウズ

ヒント|設計|データ|データベース|データベース設計

動的な Web サイトの設計において、データベース設計の重要性は自明のことです。適切に設計されていない場合、クエリが非常に困難になり、プログラムのパフォーマンスにも影響します。 mySQL データベースと Oracle データベースのどちらを使用しているかに関係なく、形式化されたテーブル設計により、PHP コードが読みやすく拡張しやすくなり、アプリケーションのパフォーマンスも向上します。

正則化とは、簡単に言えば、テーブル設計における冗長性や不整合な従属を排除することです。この記事では、設計において知っておくべき形式化テクニックを学ぶ 5 つの段階的なプロセスについて説明します。したがって、実現可能で
効率的な​​データベースが確立されます。この記事では、悪用される可能性のある関係の種類についても詳しく分析します。

ここでは、ユーザーの名前、会社、会社の住所、およびいくつかの個人的なお気に入りまたは URL を保存するユーザー情報テーブルを作成したいと仮定します。最初に、次のようなテーブル構造を定義します。

ゼロステータス フォーム

ユーザー

name company company_address url1 url2

Joe ABC 1 Work Lane abc.com xyz.com

Jill XYZ 1 Job Street abc .com xyz.com

正規化が実行されないため、この形式のテーブルをゼロ状態形式テーブルと呼びます。 url1 フィールドと url2 フィールドに注意してください --- アプリケーションで 3 番目の URL が必要な場合はどうすればよいでしょうか?この方法では、テーブルに追加の列を追加する必要がありますが、これは明らかに良いアイデアではありません。スケーラブルな
システムを作成したい場合は、最初の正規化形式の使用を検討し、それをテーブルに適用する必要があります。

正規化形式の第1レベル

1. 各テーブル内の重複グループを削除します

2. 関連データのセットごとに独立したテーブルを作成します

3. 主キーを使用して関連データの各セットを識別します

上の表は明らかに上記の最初のルールに違反しています。では、3 番目のルールの主キーは何を意味するのでしょうか?非常に簡単で、自動的に増加する一意の整数値を各レコードに追加するだけです。この値により、同じ名前を持つ 2 つのレコードを区別できます。最初のレベルの正規化を適用すると、次のテーブルが得られます: users

userId name company company_address url 1 Joe ABC 1 Work Lane abc.com 1 Joe ABC 1 Work Lane xyz.com
2 Jill ですが、この処理により次のような結果が得られます。新たな問題。ユーザー テーブルにレコードを挿入するたびに、すべての会社データとユーザー データを繰り返す必要があります。これにより、データベースが以前よりも大きくなるだけでなく、エラーが発生しやすくなります。したがって、まだ第 2 レベルの形式化を行う必要があります。








声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。