Я использую Entity Framework для настройки базы данных. Я новичок в реляционных базах данных и пытаюсь определить правильный способ настройки нескольких таблиц и их отношений. Вот s coop.
Скажем, у меня есть три таблицы в моей базе данных.
Основная таблица - это таблица A, в которой содержится набор данных для объекта. Давайте назовем этот объект Food
. Столбцы: FoodID
(первичный ключ), RecipeID (внешний ключ, связанный с его рецептом в таблице C).
Таблица C: содержит записи для рецептов, используемых для хранения различных Food
элементов в таблице А. Столбцы: RecipeID (первичный ключ) и имя рецепта.
Таблица B: является записью инструкции / рецепта для создания Food
. Столбцы: EntryID (первичный ключ), RecipeID (внешний ключ, ссылающийся на идентификатор рецепта в таблице C), FoodID (внешний ключ, ссылающийся на еду в таблице A).
Я не могу обернуться вокруг правильный способ сделать это, так как это создает циклическое отношение.
Должен ли я просто удалить внешний ключ (RecipeID
) из таблицы Food
? Какой правильный поток я должен преследовать в подобных ситуациях.
Recipes -> Multiple Recipe Entries -> Food -> Recipe
Food
требуется рецепт для его изготовления, но Food
используется в рецептах для изготовления других Food
.
Концептуализация данных в C# код, который будет выглядеть вот так.
public class Food
{
public int FoodID { get; set; }
public string Name { get; set; }
public List<Food> Recipe { get; set; }
}
Модель Entity Framework будет выглядеть следующим образом.
public class Food
{
[Key]
public int FoodID { get; set; }//Pri Key
public string Name { get; set; }
public int FoodRecipeID { get; set; }//Foreign Key
public virtual FoodRecipe FoodRecipe { get; set; }//Navigation Property
}
public class FoodRecipeEntry
{
[Key]
public int FoodRecipeEntryId { get; set; } //Pri Key
public string Name { get; set; }
public int FoodID { get; set; }//Foreign Key
public int FoodRecipeID { get; set; }
//Navigation Properties
public Food Food { get; set; }
public FoodRecipe FoodRecipe { get; set; }
}
public class FoodRecipe
{
[Key]
public int FoodRecipeID { get; set; } //Pri Key
public string Name { get; set; }
public virtual ICollection<FoodRecipeEntry> FoodRecipeEntries {get; set; }//Navigation Property
}