具有Asp.Net核心身份一对一和一对一关系的数据库设计

时间:2019-05-07 15:44:14

标签: sql database entity-framework database-design ef-code-first

我的Asp.Net Core Identity表格设计遇到了一些问题。截至目前,我有一个User table继承自IdentityUser。该应用程序的所有用户都应在该表内才能登录。现在我还有2张桌子:

用户表:

public class User : IdentityUser
{
    [Required]
    [StringLength(50)]
    public string Name { get; set; }
    [Required]
    [StringLength(50)]
    public string Title { get; set; }
    ...
}

驱动程序表:

public class Driver
{
    [Required]
    [StringLength(50)]
    public string Car{ get; set; }
    [Required]
    [StringLength(50)]
    public string LicenseNr { get; set; }
    ...
}

客户表:

public class Customer
{
    [Required]
    [StringLength(50)]
    public int Id { get; set; }
    [Required]
    [StringLength(50)]
    public string Adress { get; set; }
    ...
}

基本上每个驱动程序都是一个用户,但并不是每个用户都是一个驱动程序。另一方面,一个客户可以有多个用户。如果客户有用户,则该用户将不会成为驱动程序。

我想让 Driver 类从 User 类继承,因为它必须具有与用户相同的属性,以及一些其他属性。并且客户应该是一对多关系

但是,如果我在User表中添加CustomerId的外键,则意味着Driver由于继承也将具有该属性,并且没有太大意义。

关于如何设计这种关系的任何建议?

(由于简单起见,我删除了一些属性)

0 个答案:

没有答案