日々の開発プロセスでは、テーブルの構築を伴う 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インデックス最適化
以上が3 つの正規形と反正規形をデータベース化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。