2009-08-07 5 views
0

나는 (가변 크기의) 튜플 목록을 가진 클래스가있는 엘릭서 모델을 만들려고한다.엘릭서 엔티티 안에 튜플 목록이 있습니다. 전의.

class Recipe(Entity): 
    ingrediants = OneToMany('IngrediantList') 
    cooking_time = Field(Integer) 
    ... 

class IngrediantList(Entity): 
    ingrediant = ManyToOne('Ingrediant') 
    quantity = Field(Number(3,2)) 

class Ingrediant(Entity): 
    name = Field(String(30)) 
    ... 

그것은 짧은 오심을 가지고 있습니다 : 나는 이런 식으로 뭔가를 할 수있는 동안

한 예는 조리법을

이 될 것입니다. 하나 들어, 나는 성분 목록에 대한 엔티티를 만드는 것을 좋아하지 않는다. 나는 도메인에 대해 아무런 의미가 없다. 추상화를 즐긴다.

또 다른 점은이 구성 요소로 준비 할 수있는 항목과 같은 쿼리가 모델에 관계를 추가하지 않으면 실제로 비효율적이며 비효율적 일 수 있다는 것입니다.

또 다른 예로는 금액 및 수량 목록이있는 은행 입금 전표가 있습니다.

그런 모델을 설계하는 가장 좋은 방법은 무엇입니까?

답변

0

이것은 복합 개체를 모델링하는 올바른 방법입니다. 변경해야 할 것은 IngredientList 클래스의 이름뿐입니다. RecipeEntry 나 IngredientQuantity와 같은 것이 더 적절할 것입니다. 이것을 튜플이라 부르는 것은 레시피에 약간의 성분이 필요하다는 사실을 피할 필요가 없다는 것입니다.

대부분의 코드에서 연관의 세부 사항을 고려하지 않으려면 sqlalchemy associationproxy 확장을 사용하여 프록시 속성을 작성하여 세부 사항을 숨길 수 있습니다.