2012-03-21 11 views
0

テーブルStudentsには、次の列が含まれています。 Id,FirstName,LastName,Adress 列の住所には通りの住所が含まれます。データベース最適化の問題

質問は次のとおりです。Adressのテーブルを別のテーブルに分離する方がデータベースの最適化が良いでしょうか?

+0

最適化する対象は?列「住所」の内容は何ですか?それは人の完全な住所を含んでいますか?そうであれば、通り、都市、郵便番号などのために別の列に分割しないようにしてください...あなたは良い答えが必要ならば、データベース/テーブルの設計についてもっと教えてください。 –

答えて

1

はい。それを別のテーブルに分けると、一人につき複数の住所を持つことができます。 2つの異なるテーブル、つまりAddressテーブルとStudentAddressテーブルを別々にマップすると、1人のアドレスが人の間で共有されていることを確認したり、1人の人物のアドレス履歴を追跡することさえできます。さらに、別のテーブルでは、アドレスを列に分割して、市または州または国で簡単に検索できるようにすることができます。

Studentテーブルを使用してAddressを単一の列に入れることはできません。

+0

上に、外国のkeを持つCity、Countryテーブルは、データベースサイズを大幅に減らし、クエリをより速くします(扱う国数)。少なくともほとんどの場合。 – TomTom

+0

あなたの答えをありがとう、私はこのアプローチを試してみます – cascadox

+0

@TomTom絶対に同意します。正規化は最適化手法です。ストレージ、パフォーマンス、使いやすさのために... –

1

どのようにそのアドレスを扱うかによって異なります。別のエンティティとして扱う必要がある場合、つまり複数の生徒に1つの住所をリンクする場合、またはその逆の場合は、正規化を行う必要があります。 アドレスがエンティティ生徒の属性のみの場合は、そのままにしておきます。

0

アドレスを管理するための完全な適切なデータ構造については、「データモデルRessource BOok、Volume 1」を参照してください。

関連する問題