2015-02-01 3 views
0

나는 다른 소매 업체에서 옷을 저장하고이 데이터베이스가 있습니다데이터를 올바르게 연결하는 방법?

  • 그래서 각 제품이 서로 다른 색상을
  • 각 제품은 이제 다른 크기
  • 각각의 크기가 또한 다른 색상
  • 있다 각 제품 및 각기 다른 크기와 색상에 따라 가격이 다를 수 있습니다.

나는 이것을 위해 장고를 사용하고 있는데, 나는이 데이터베이스 관계가 어떻게 작동할지 생각해보고있다.

내가 이런 식으로 줄까?

class Product(models.Model): 
    name = model.CharField() 

class Size(models.Model): 
    size_of_product = model.CharField() 
    product = model.ForeignKey(Product) 

class Color(models.Model): 
    color_of_product = model.CharField() 
    product = model.ForeignKey(Product) 
    size = model.ManyToManyField(Size,though="Price") 

class price(model.Model): 
    size = model.ForeignKey(Size) 
    color = model.ForeignKey(Color) 
    date =model.Date() 

더 나은 솔루션을 제안 해 주시겠습니까? 분명히 아직 데이터베이스에 대한 연습이 많지 않으십니까?

감사합니다!

답변

0

나는 당신의 초기 설계와 가까이하려면 다음을 제안한다 : 그와

 
class Product(models.Model): 
    name = models.CharField() 

class Size(models.Model): 
    size_of_product = models.CharField() 

class Color(models.Model): 
    color_of_product = models.CharField() 

class ProductPrice(model.Model): 
    size = models.ForeignKey(Size) 
    color = models.ForeignKey(Color) 
    product = modelss.ForeignKey(Product) 
    price = models.DecimalField(...) 

당신이 제품의 목록 크기의 목록과 색상의 목록을해야합니다. 제품 변형을 추가 할 때마다 새 ProductPrice 인스턴스와 3 가지 (제품, 크기, 색상) 인스턴스가 모두 결합 된 가격이 적용됩니다.

그러나 일반적으로 제품이 색상이나 크기보다 더 많은 특성 (예 : 제조업체 또는 재료)을 가지고 있기 때문에 대부분의 전자 상점은 이와 같이 작동하지 않습니다.

그러므로보다 일반적인 해결책은 다양한 카테고리 (예 : 신발, 자켓, 바지)를 정의하는 모델을 만드는 것입니다. 각 CategoryCharacteristic (예 : 색상 또는 재료)의 숫자를 가지며 각 은 가능한 숫자가 Value (예 : 파란색, 갈색 또는 가죽,면 등)입니다. 마지막으로 Product은 가격이 책정되는 특정 항목이며 특정 Category에 속하며 그 중 에 대해 각각 Value을 갖습니다. Category입니다.

위의 디자인을 사용하여 우리는 각 제품에 대해 원하는만큼 많은 특성을 지원할 수 있습니다.

+0

감사합니다. 아주 좋아! 단 한 가지는 크기와 색상이 다른 가격으로 조합되어있을 수 있다는 것입니다. 여기에서 얻을 수 있는지 여부는 알 수 없습니다. 그래서 색상과 같습니다 : 파란색 크기 : 중간은 가격이 1 개이며 색상은 빨간색입니다. 크기가 빨간색 : 중간 크기는 다른 크기 일 수 있습니다. – Nazariy1995

+0

분명히 * 두 방법 모두를 통해이를 달성 할 수 있습니다. 첫 번째 접근법에서는 제품 X에 대한 값 (X, blue, medium, price1)과 (X, red, medium, price2)를 갖는''ProductPrice''를 추가 할 것입니다. 두 번째 접근법에 관해서는 가격과 * 값이 다른 두 개의 "제품"을 추가하면됩니다 (빨간색과 중간, 파란색과 중간이 다른 제품) – Serafeim

0

좋아, 그럼 당신은 옷을 모델링하고 있습니다. (Pun은 절대적으로 의도되었습니다!) 좋아, 우리가 그것에 대해 뭘 할 수 있는지 보자.

  • 각 제품은 서로 다른 색상

미세있다. 엔티티 product의 속성은 color입니다. 계속합시다.

  • 각 제품은 또한 다양한 크기 다시

미세 있습니다.엔티티 product의 속성은 size입니다. 여태까지는 그런대로 잘됐다.

  • 각각 크기가 다른 색상

음도 있습니다. 기다려. 제품은 크기와 색상을 가질 수 있지만 크기는 색상을 가질 수 없으며 색상은 크기를 가질 수 없습니다. 속성으로서 이들은 서로가 아니라 product에 관련됩니다. 이 시점에서 모델링이 중단됩니다.

나는 모든 색상이 모든 크기로 제공되지 않는다는 것을 의미한다고 생각합니다. 이것은 다릅니다. 이 경우 색상은 제품과 직접 관련이 없지만 제품/크기 조합입니다.

올바르게 다 대다 관계로 식별되었습니다. 그러나 색상과 중간 제품/크기 조합 사이에 있으며 제품에는 직접 연결되지 않습니다.

관련 문제