Dans ma langue principale (C#), il est très facile d'extraire des classes de données. Par exemple:Encapsulation ou abstraction dans la conception d'une base de données
public interface IFruit
{
public TimeSpan GrowthTime { get; set; }
public string Color { get; set; }
}
public class Apple : IFruit
{
public TimeSpan GrowthTime
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public string Color
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
}
Comment iriez-vous implémenter ce type de fonctionnalité dans une conception de base de données? Disons que j'ai une table nommée Bulletins
qui peut contenir plusieurs types de bulletins, qu'ils soient Announcments
, Ads
ou Events
.
I pensé à créer une table Bulletins
et une table séparée pour chacune des classes ci-dessus avec une colonne pour chaque FK
contenue dans la table Bulletins
; cependant, cela ne fonctionnera pas puisque les FK sont obligatoires (ou plutôt une mauvaise pratique si les annuler) et un Bulletin
ne peut jamais être plus d'une des classes listées ci-dessus.
Je pourrais faire des tables séparées pour chacun d'eux mais la vue de modèle externe de l'utilisateur est seulement celle du Bulletins
. Pour eux, ils voient un bulletin qui peut être un type différent, et non une entité distincte. Aucune suggestion?