현재 customer와 order database를 가지고 있다고 하자.
우리는 이제 판매할 제품에 대한 db가 필요하다.
각각의 제품은 특정 type을 가지고 있다.
각각의 타입에 대한 의미를 정확하게 알아야 product에 대해 정확하게 modeling이 가능하다.
예시 product
Blender, Commercial, 1.25 Qt.”, manufactured by Hamilton Beach, model number 908.
이것은 product type이다. 그냥 우리 집에 보관된 각각의 포장된 blender가 아니다.
이때 같은 제작자는 다른 blender model들을 만들었을 수도 있고, 다른 회사에서 제작된 blender를 우리가 저장해놓고 있을수도 있다.
아래의 설명은 product가 order와 어떤 관계를 가지는지 말해준다.
"제품은 한번 주문될지라도 주문은 많은 제품들을 포함할 수 있다. 각 주문에 product가 생길때마다 우리는 몇개의 product가 주문되었는지, 판매해서 받을 가격은 얼마인지 알아야한다. 가격에 관련된 것은 customer의 등급마다 다른 할인, 그냥 할인, 그리고 가격변화등에 따른 변동으로 인해 필요하다."
위 설명에서 우린 모델링할때 필요한 몇가지의 제약조건을 가져올 수 있다.
각 주문은 하나 이상인 여러개의 product를 담을 수 있다.
→ 여기서 하나 이상인 이유는 주문이 0개에 대해서는 처리되지 않으므로.
각 제품은 여러 주문에 포함될 수 있다.
→ 포함이 될수도 있고 안될수도 있다.
여기서 1대1, 1대 다 모델과는 차이를 보인다.
각각의 방향에 대해 maximum multiplicity(또는 cardinality)는 many다.
즉 product와 order는 many-to-many 관계다.
여기선 sale price와 product의 quantity가 묘사되었다. 이는 Order와 Product class의 속성이 될 수 없다.
이는 Order와 Product의 관계성으로 생긴 특성들이다. 따라서 우리는 이를 어떻게 구현할지 알아볼것이다.

