2012-10-11 8 views
1

기본 키 : 성분 ID와 외래 키 : recipeID가있는 성분 목록이 있습니다. 나는 하나의 성분을 recipeID와 ingredientID를 포함하는 많은 Recipes에 매핑하려고 노력 해왔다.ASP.net - 하나의 기본 키를 여러 외래 키에 연결하려고 시도했습니다.

이전에는 대상 레시피 recipeID와 동일한 Ingreients recipeID를 지정했습니다. 그러나 이것은 재료를 하나의 레서피와 연관시키는 것을 제한했습니다.

레시피 성분 ID를 성분과 연관시킴으로써, 레시피는 관련된 하나의 성분만을 가질 수 있지만 그 성분은 다른 레시피와 연관 될 수있는 것으로 보인다.

조리법과 성분을 연관시키는 recipeID와 ingredientsID가 포함 된 recipeIngredient를 만들려고했지만 성공하지 못했습니다.

다음은 현재 모델에 대한 설명입니다.

레시피 모델 :

[Key] 
    public int recipeID { get; set; } 
    public int ingredientID { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public decimal Cost { get; set; } 

    public virtual NutritionalValue NutritionalDetails { get; set; } 
    public virtual ICollection<Ingredient> Ingredients { get; set; } 
    public virtual ICollection<RecipeStep> RecipieSteps { get; set; } 

성분 모델 :

[Key] 
    public int ingredientID { get; set; } 
    //public int recipeID { get; set; } 
    public string Name { get; set; } 
    public string Descritpion { get; set; } 
    public decimal Cost { get; set; } 
    public decimal Amount { get; set; } 
    public string Type { get; set; } 

    public virtual Recipe Recipe { get; set; } 

내가 달성하기 위해 노력하고 그이에서 최종 개념은, 사용자가 조리법 편집보기에서 성분을 선택하는 것입니다 선택하는 재료를 추가하고 저장하여 해당 특정 래서 피와 연관 시키지만 추가 래서 피와 동시에 연관시킬 수 있습니다.

감사합니다.

답변

0

내가 말할 수있는 것부터, 각 레시피에는 여러 가지 재료가 필요하지만 항목을 복제하지 않는 재료 테이블이 필요합니다. 실제로는 다 대다 관계와 같습니다.

Ingredient(id (pk), name, etc...) 
Recipe(id (pk), name, etc...) 
RecipeIngredients(recipeId (fk to Recipe.id), ingredientId (fk to ingredient.id)) 

이 방법 조리법은 RecipeIngredients 테이블을 통해 여러 재료를 가질 수 있으며 튜플 당 성분을 나타내는 표 (성분)은 아직 거기 : 그런 경우에는, 데이터베이스 스키마는 다음과 같이 변경 필요 튜플 당 1 개의 래서 피 (Recipe).

LMK는 그 도움이된다면 :

+0

감사합니다, 즉 도움이되었다, 나는 이제 모든 일이! – GenericController

관련 문제