2012-07-03 7 views
0

고객은 많은 구매를 할 수 있지만 해당 상품은 한 번만 구입할 수 있지만 최대 10 명의 다른 고객이 동일한 품목을 구매할 수 있습니다. 내 데이터베이스 디자인에서이를 구현할 수있는 방법이 있습니까? 아니면 응용 프로그램 측면에서해야 할 일입니까?고객 구매 제한

+1

이것은 응용 프로그램 측면에서 절대적으로 수행되어야하는 것처럼 들립니다. –

+0

[triggers] (http://dev.mysql.com/doc/en/triggers.html)를 사용하여 데이터베이스 내에서 해당 논리를 적용 할 수 있지만 응용 프로그램 내에서 이러한 검사를 수행하는 것이 좋습니다. 사용자에게보다 나은 피드백을 제공 할 수 있도록 – eggyal

+1

애플리케이션 로직 레이어에 넣으십시오. –

답변

1

이것은 DB에 구현 될 수 있지만 나쁜 생각입니다. 이유 :

  • 귀하의 DB는 비즈니스 규칙을 나타내는 데이터가 아니라 데이터를 나타내는 것입니다. 데이터 사용을 관리합니다. 데이터 표현을 과 비즈니스 로직으로 구분하면 더욱 유연 해집니다. 필요한 경우 새 데이터베이스로 전환하여 을 입력하십시오.
  • 을 DB에 넣고 넣는 코드는 해당 규칙을 위반하려고 시도 할 수 있으므로 은 먼저 고객에게 옵션을 표시하지 않도록하거나 에 올바르게 형식이 지정된 오류를 표시해야합니다. 이 두 가지 상황 모두 코드는 데이터베이스에 표현 된 이 될 비즈니스 규칙에 대한 지식이 있어야하므로 처음에는 DB에 넣을 필요가 없습니다. 코드에 한 번만 작성하십시오.

한 가지 해결책은 구매를 진행할 수 있는지 여부를 제어하는 ​​일종의 구매 관리자 오브젝트를 작성하여 비즈니스 로직을 한 곳에서 캡슐화하는 것입니다.