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 中添加这些表,还是需要为每个表创建一个新模型,例如。地址模型,电话模型?它们都将与 Person 表具有一对多的关系。如果你能做到,那么将所有东西都放在一个模型中是个好主意。过去我创建了单独的模型,但我质疑这是否有必要。

4

1 回答 1

1

您指的是数据库规范化。一般来说,只要您在模型中看到多对一或多对多关系,您就希望对数据进行规范化。

主要问题是,一个人是否总是只有一个地址/电话?如果是这样,将它们保留在您的 Person 模型中可能是有意义的。如果他们可能(现在或将来)有多个地址/电话,那么最好将它们标准化为不同的模型。

即使您现在不需要多个地址/电话,您也可能在某个时候需要,因此,大多数人会选择像这样规范化相关。

另一个好处是,这将允许您将类型分配给您的地址(运输/账单)和电话(手机/家庭/工作)。

List<>如果我是你,我会考虑建立一个 Address 和 Phone 模型,并通过 a (或 other )将它们作为与你的 Person 的一对多关系IEnumerable<>

于 2012-12-05T23:14:43.217 回答