0

人のさまざまな側面を表す Person モデルがあります。私の人物モデルには、次のものがあります。

public class PersonsContext : DbContext
    {
        public PersonsContext()
            : base("SiteDBCon")
        {
        }

        public DbSet<Person> Persons { get; set; }

        public DbSet<UserProfile> UserProfiles { get; set; }
    }

    public class Person
    {
        public int ID { get; set; }
        public int Age { get; set; }
        public string Gender { get; set; }
        public string Race { get; set; }
        public string Ethnicity { get; set; }
        public int UserId { get; set; }                //User who input data
        public UserProfile UserProfile { get; set; }   //User who input data

    }

ただし、人が複数のエントリを持つことができるものもあります。住所 - 現在の前の電話番号、現在の前の電話番号などです。これらのテーブルを PersonModel に追加できますか、それともテーブルごとに新しいモデルを作成する必要がありますか? AddressModel、PhoneModel? それらはすべて Person テーブルと 1 対多の関係を持ちます。それができるのであれば、オールインワンのモデルを用意することをお勧めします。過去に別のモデルを作成しましたが、それが必要かどうか疑問に思っています。

4

1 に答える 1

1

あなたが言及しているのはデータベースの正規化です。一般的に言えば、モデルに多対 1 または多対多の関係が見られる場合はいつでも、データを正規化する必要があります。

主な質問は、人は常に正確に 1 つの住所/電話を持っているのでしょうか? もしそうなら、それらを Person モデルに保持することは理にかなっているかもしれません。それら(現在または将来)複数のアドレス/電話を持つ可能性がある場合、ほとんどの場合、これらを異なるモデルに正規化するのが最善です。

今は複数のアドレス/電話番号が必要ない場合でも、いつかは必要になるかもしれません。このため、ほとんどの人はこのような関連を正規化することを選択します。

もう 1 つの利点は、住所 (配送先/請求先) と電話番号 (携帯/自宅/職場) にタイプを割り当てることができることです。

List<>私があなただったら、住所と電話のモデルを設定することを検討し、 (またはその他の)を介してあなたの Person との 1 対多の関係としてそれらを設定しますIEnumerable<>

于 2012-12-05T23:14:43.217 に答える