У меня возникла небольшая проблема с дизайном моей таблицы в 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 , поскольку он должен иметь те же свойства, что и у пользователя, плюс некоторые дополнительные. И клиент должен иметь отношение один-ко-многим .
Но если я добавлю внешний ключ CustomerId в таблицу User, это означает, что Driver также будет иметь это свойство из-за наследования и не будет иметь особого смысла.
Любые предложения о том, как разработать эти отношения?
(из-за простоты я удалил некоторые свойства)