Проектная база данных для каскадного выпадающего списка без круговой ссылки
Я столкнулся с циклической ссылкой при проектировании базы данных для хранения данных за каскадными выпадающими списками. Я создаю объект со свойствами, которые зависят друг от друга, отношения кажутся неизбежными в результате круговой ссылки.
Например, я хочу добавить в базу данных новое оборудование. Оборудование имеет тип и подтип. Я выбираю тип, а затем выбираю подтип, который фильтруется по этому типу. Затем новое оборудование имеет ссылку на тип и подтип, которые также имеют отношение. Таким образом, я получаю треугольную/круговую ссылку (я бы включил изображение, но не могу понять этого).
В этой ситуации у людей обычно есть оборудование, ссылающееся только на подтип?
Это решило бы этот случай, поскольку подтипы имеют только один тип, но что, если это было отношение "многие ко многим" между типом и подтипом?
Что делать, если каскад имеет более двух вариантов, которые зависят друг от друга? (может быть, с маркой автомобиля, моделью, отделкой, двигателем)
Что я уже пробовал:
Используя C# и EF для создания базы данных, мои (упрощенные) объекты выглядят следующим образом:
public class Equipment { [Key] public Guid EquipmentId { get; set; } public string Description{ get; set; } /***** Relationship and Navigation *****/ public Guid EquipmentTypeId { get; set; } public EquipmentType EquiptmentType { get; set; } public Guid EquipmentSubTypeId { get; set; } public EquipmentSubType EquipmentSubType { get; set; } } public class EquipmentType { [Key] public Guid EquipmentTypeId { get; set; } public string Description{ get; set; } /***** Relationship and Navigation *****/ public ICollection Equipment { get; set; } public ICollection EquipmentSubType { get; set; } } public class EquipmentSubType { [Key] public Guid EquipmentSubTypeId { get; set; } public string Description{ get; set; } /***** Relationship and Navigation *****/ public Guid EquipmentTypeId { get; set; } public EquipmentType EquipmentType { get; set; } public ICollection Equipment { get; set; } }
ZurdoDev
Я не совсем понимаю, о чем вы спрашиваете. Нет ничего плохого в том, чтобы делать самоссылки в базе данных или в коде. Вам просто нужно решить, какие данные вам нужно хранить, а затем сохранить их.