Это вряд ли "смехотворно нормализовано" - на самом деле, одной таблицы с самоссылкой достаточно для хранения информации в базе данных с использованием модели списка смежности:
Categories (CategoryID, CategoryName, ParentCategoryID)
Где ParentCategoryID
указывает CategoryID
в той же таблице.
Это может быть сопоставлено с очень простым классом сущностей:
public class Category
{
public string Name { get; set; }
public Category ParentCategory { get; set; }
public IList<Category> ChildCategories { get; set; }
}
Это действительно все, что тебе нужно сделать. Если у вас начнутся очень глубокие / широкие иерархии, вам, возможно, придется рассмотреть альтернативные модели производительности, но, учитывая приведенный здесь пример, вы далеки от того, чтобы вырастить простой список смежности.
Забудьте перечисления - здесь они не имеют смысла. Если это приложение, управляемое данными, вы почти наверняка захотите внести изменения в список категорий, не изменяя код, как того требует тип перечисления.