0

データベースの作業を開始して以来、最初の決定と戦ってきました。電子メール アドレス用に別のテーブルが必要かどうかを検討しています。私のデータベースは次のようになります。

people(id, first_name, last_name, email)
addresses(id, address, street, city, state, zip, latitude, longitude)
addresses_people(id, person_id, address_id)
phone_numbers(id, person_id, phone_number, type)

メールアドレス用に別のテーブルを用意する必要はないと考えました。私が抱えていると思われる問題は、電子メール アドレスを持っていない人がいるということです。多くの場合、子供を people テーブルに格納します。何千もの空の電子メール フィールドを避けるために、別のテーブルに電子メール アドレスを配置する方が良い設計のように思えます。

アプリはすでにある程度生産されているため、これを変更するのは非常に面倒ですが、1、2 年後ではなく、今変更する方が指数関数的に簡単です。電子メールを別のテーブルに変更するのに 1 日か 2 日かかる価値はありますか?

4

2 に答える 2

4

私の意見では、あなたは過剰に設計されています。オプションemailのフィールドは問題ありません。実際に別のテーブルを持つと、はるかに大きなオーバーヘッドが発生する可能性があります。

別のテーブルを使用する唯一の理由は、ユーザーが複数の電子メールを持っていると予想される場合に、1 対 N の関係をモデル化するためです。

于 2012-04-27T15:31:48.303 に答える
1

変える必要はないと思います。ほとんどの場合、連続していくつかのフィールドを空にすることは大したことではありません。実際、ほとんどのデータベースで一般的です。データベースの設計は、主にモデル化しようとしているオブジェクトに依存する必要があり、重大なストレージの制約やその他の酌量すべき状況がない限り、単純にストレージ上の理由で物事をテーブルに分割することに関心を持つべきではありません。

データベース設計を参照してください-空のフィールドも質問に多くの光を当てています。

于 2012-04-27T15:32:59.707 に答える