sql >> データベース >  >> RDS >> Mysql

MySQL:複数のテーブルまたは多くの列を持つ1つのテーブル?

    情報が1対1(各ユーザーが1つの名前とパスワードを持っている)の場合は常に、データベースが結果を取得するために必要な結合の数を減らすため、1つのテーブルを使用することをお勧めします。一部のデータベースではテーブルあたりの列数に制限があると思いますが、通常は心配する必要はなく、必要に応じて後でいつでも分割できます。

    データが1対多の場合(各ユーザーが数千行の使用情報を持っている場合)、重複データを減らすために個別のテーブルに分割する必要があります(重複データはストレージスペースとキャッシュスペースを浪費し、データベースの保守を困難にします。

    ウィキペディアの記事は、データベースの正規化 にあります。 これの理由を詳細に説明しているので、興味深いです:

    データベースの正規化は、冗長性と依存関係を最小限に抑えるために、リレーショナルデータベースのフィールドとテーブルを整理するプロセスです。正規化には通常、大きなテーブルを小さな(冗長性の少ない)テーブルに分割し、それらの間の関係を定義することが含まれます。目的は、データを分離して、フィールドの追加、削除、および変更を1つのテーブルで実行し、定義された関係を介してデータベースの残りの部分に伝播できるようにすることです。

    非正規化 また、データを繰り返す方がよい場合があるため(データを読み取るときにデータベースが実行する必要のある作業量が減るため)、注意する必要があります。最初はデータをできるだけ正規化し、特定のクエリのパフォーマンスの問題を認識している場合にのみ非正規化することを強くお勧めします。



    1. SQL Server(T-SQL)で圧縮を使用してテーブルを作成する

    2. Oracle SQL Developerを使用してデータをエクスポートする方法は?

    3. PostgreSQL EXPLAIN –クエリコストはいくらですか?

    4. PostgreSQLでテーブルの行数をすばやく検出する方法