C# 面向领域驱动设计的数据库设计

C# 面向领域驱动设计的数据库设计,c#,C#,我正在做一些反向工程的经典N分层应用程序,使其DDD。 从当前的实现中,有一个实体Person,有太多的信息,所以我在域中分离了它。以下是我所拥有的: public class Person { public string Name { get; protected set; } public string LastName { get; protected set; } public string Email { get; protected set; } p

我正在做一些反向工程的经典N分层应用程序,使其DDD。 从当前的实现中,有一个实体Person,有太多的信息,所以我在域中分离了它。以下是我所拥有的:

public class Person
{
    public string Name { get; protected set; }
    public string LastName { get; protected set; }
    public string Email { get; protected set; }

    public Address Address { get; protected set; }

    public IReadOnlyList<Phone> Phones { get; protected set; }
}

public class Address
{
    public string City { get; protected set; }
    public string Postal { get; protected set; }
}

public class Phone
{
    ///
}
公共类人物
{
公共字符串名称{get;protected set;}
公共字符串LastName{get;protected set;}
公共字符串电子邮件{get;protected set;}
公共地址{get;protected set;}
公共IReadOnlyList电话{get;protected set;}
}
公共课堂演讲
{
公共字符串City{get;protected set;}
公共字符串{get;protected set;}
}
公用电话
{
///
}
以及每个类、setThis、getThat等的附加方法。 我这样做是因为我想用EF避免经典的对象值,EF是SQL中包含所有信息的一列。 我的问题是,为Person设计数据库表的最佳实践是什么? 我知道在db中有3个单独的表和FK,或者有1个表和一个实体,例如PersonEntity:Person


感谢您提供任何建议

鉴于显示的代码,您至少需要一个
个人
表和一个
电话
表(该表的外键返回到
个人
)。现在还不清楚你们还需要什么样的信息或帮助。我所说的附加信息是指一个人可以有社交安全号码,电话可以有固定电话,手机,白天的活动号码,晚上的单独号码,有可能有一个以上的地址。这就是为什么我想到了3个表,人,电话,地址,但我不确定我是否需要一个地址表
“有可能有超过1个地址”
-在那个模型中没有。一个
只有一个
地址
。您可以有一个单独的
地址
表,但由于任何给定的
人员
只能有一个
地址
,因此它本质上是一个1:1的关系,因此它本身不需要是自己的表。听起来你有点想太多了。这实际上是一个关系表结构的教科书示例。一个型号(
Person
)有许多子型号(
Phone
),因此您可以使用返回到
Person
的FK为
Phone
创建一个表。的确,域与地址有1:1的关系。因此,给出了模型示例,您的建议是有两个表,Person和Phone,从Phone我将有FK到Person,正如我最初所想的,但是地址信息将保存在Person表中。谢谢你的建议