0

複数のクライアントを持つプラットフォームがあり、それぞれに保存する必要がある多数の人口統計があります。これを念頭に置いて、MySQL で 2 つのことのいずれかを行うことができるようです。また:

オプション #1: 全員の人口統計を含む大きなテーブルを用意します。例えば:

Table: clientDemographics

id  |  clientID  |  firstName ....
1   |     34     |  John ......
2   |     12     |  Fred ......

オプション #2: 各クライアントを分割して、独自のテーブルを作成します。

Table: client34_demographics

id  |   firstName ....
1   |   John ......

Table: client12_demographics

id  |   firstName ....
1   |   Fred ......

クライアントごとにテーブルを分割することの利点 (効率、セキュリティ、スケーラビリティ) または欠点はありますか? これらのうち、より良い方法はどれでしょうか? ありがとう!

4

1 に答える 1

2

2 番目の例はお勧めできません (人口統計ごとにテーブルを作成します)。代わりに、クライアント テーブルに固有の識別可能な情報を含む、より「正規化された」ものを使用し、ルックアップとして追加のメタ データ (人口統計) を使用します。

Table: Clients

ClientId | FirstName | LastName | Email
-------------------------------------------------
1        | John      | Smith    | jsmith@email.com

Table: Demographics

DemographicId | Name 
-------------------------------------------------
1             | Gender
2             | Nationality
3             | Age

Table: Clients_Demographics

CDId | ClientId | DemographicId | Value
-------------------------------------------------
1    | 1        | 1             | Male
2    | 1        | 2             | American
3    | 1        | 3             | 27

このようにして、データベースのスペースを節約し、クエリのパフォーマンスを向上させ、データのスケーラビリティを維持しながら、人口統計の種類、人口統計の値、クライアントなどで簡単に並べ替えることができます。スケーラブルとは、つまり、別の人口統計を追加する必要があるということですか? Demographics テーブルに別の行を追加し、Clients_Demographics テーブルの値をクライアントに関連付けるだけです。値が設定されていない場合 (つまり、行が存在しない場合)、実際に値が設定されるまで、フォームで値が空として表示されることがわかります。

于 2013-10-18T16:21:27.533 に答える