Это, скорее всего, один для всех вас, сексуальных администраторов баз данных:
Как мне эффективно моделировать реляционную базу данных, в которой у меня есть поле в таблице «Событие», которое определяет «SportType»?
Это поле "SportsType" может содержать ссылку на различные спортивные таблицы. "FootballEvent", "RubgyEvent", "CricketEvent" и "Событие F1".
Каждый из этих спортивных столов имеет различные поля, специфичные для этого вида спорта .
Моя цель состоит в том, чтобы иметь возможность в общем случае добавлять виды спорта в будущем по мере необходимости, но при этом хранить данные (поля) для конкретных видов спорта как часть моего объекта событий.
Можно ли использовать ORM, такой как NHibernate / Entity framework / DataObjects.NET, который бы отражал такие отношения?
Я собрал быстрый пример C #, чтобы выразить свое намерение на более высоком уровне:
public class Event<T> where T : new()
{
public T Fields { get; set; }
public Event()
{
EventType = new T();
}
}
public class FootballEvent
{
public Team CompetitorA { get; set; }
public Team CompetitorB { get; set; }
}
public class TennisEvent
{
public Player CompetitorA { get; set; }
public Player CompetitorB { get; set; }
}
public class F1RacingEvent
{
public List<Player> Drivers { get; set; }
public List<Team> Teams { get; set; }
}
public class Team
{
public IEnumerable<Player> Squad { get; set; }
}
public class Player
{
public string Name { get; set; }
public DateTime DOB { get; set;}
}