3 つの正規形と反正規形をデータベース化する

亚连
リリース: 2018-05-10 10:43:12
オリジナル
3562 人が閲覧しました

日々の開発プロセスでは、テーブルの構築を伴う MySQL データベースを操作する必要があります。適切に構造化されたデータベース テーブルを作成するには、次の 3 つのデータベース パラダイムに従う必要があります。

1. 最初の正規形

は、データテーブル内の各列 (フィールド) の原子性を保証します。

データテーブルの各フィールドがそれ以上分割できない最小のデータ単位である場合、それは第一正規形を満たします。

例: ID、ユーザー名、パスワードを含むユーザーテーブル

2. 2 番目の正規形

は、最初の正規形をさらに一歩進めたものです。目標は、 table は主キーに関連付けられています。

関係が第 1 正規形を満たし、主キーを除く他のすべての列が主キーに依存する場合、その関係は第 2 正規形を満たします。

例: ユーザーにはロールが 1 つだけあり、1 つのロールが複数のユーザーに対応します。次に、次のようにデータ テーブルの関係を確立して、第 2 正規形を満たすようにすることができます。

user ユーザーテーブル、フィールド ID、ユーザー名、パスワード、role_id

role ロールテーブル、フィールド ID、名前

user テーブルは、ロール ID (role_id) を通じてロールテーブルに関連付けられます

3.

第 2 正規形に基づいてさらに一歩進んで、テーブル内の列が間接的ではなく主キーに直接関連付けられるようにすることが目標です。

例: 1 人のユーザーが複数のロールに対応することも、1 つのロールが複数のユーザーに対応することもできます。次に、次のようにデータ テーブルの関係を確立して、第 3 正規形を満たすようにすることができます。

user ユーザーテーブル、フィールド ID、ユーザー名、パスワード

role ロールテーブル、フィールド ID、名前

user_role user-role 中間テーブル、id、user_id、role_id

このように、3 番目のテーブル (中央のテーブル) ) ユーザー テーブルとロール テーブル間の関係を確立すると同時に、正規化の原理に準拠するため、第 3 正規形と呼ぶことができます。

4. 非正規化

非正規化とは、冗長データまたは重複データを追加することによってデータベースの読み取りパフォーマンスを向上させることを指します。

例: 上記の例の user-role user-role 中間テーブルにフィールド role_name を追加します。

非正規化により、関連するクエリ中のテーブル結合の数を減らすことができます。

上記は私がまとめた MYSQL データベースのテーブル作成パラダイムであり、将来的に皆さんのお役に立てば幸いです。

関連記事:
インデックスをカバーするMySQLインデックス最適化

mysqlフィールドタイプの選択方法

mysqlロックとインデックスの関係

以上が3 つの正規形と反正規形をデータベース化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート