2013-04-09 2 views
1

이 질문에 답을 할 수는 있지만 정확한 위치를 알 수는 없습니다.데이터베이스 : Foreign Key Enforcement

서문 :

와우 결제 솔루션입니다. 응용 프로그램 디자인은 매우 간단합니다. 우리는 기업용 웹 스토어를 만들고 비즈니스 소유자에게 자격 증명을 제공합니다.

비즈니스 소유자는 로그인하여 관련 제품, 카테고리 등을 만들 수 있습니다. 또한 청구서 작성에 사용할 기기를 등록 할 수도 있습니다.

마스터 엔티티는 웹 인터페이스를 사용하여 생성 할 수 있지만 요금 청구는 장치의 네이티브 응용 프로그램에서 수행 할 수 있습니다.

데이터베이스 테이블 :

BUSINESS: id, name etc. - Business Info Table 
CATEGORY: id, business_id, name etc. - Product Categories 
PRODUCT: id, category_id, name etc. - Products 

응용 프로그램 :

봄 ROO 기반의 웹 응용 프로그램입니다. GUI 기술

문제로 스프링 MVC : 언급 한 이전 소유자로

는 웹 스토어에 로그인 할 때 자신의 자격 증명을 사용합니다. 그래서 그들은 엔티티를 생성하기 시작했습니다. webapp는 모든 카테고리, 제품 등에 대해 투명하게 저장된 관련 비즈니스 ID를 알고 있습니다.

제품을 만드는 동안 사용자는 제품이 떨어질 수있는 카테고리를 선택할 수 있습니다.

질문 : business_id를 제품 테이블에 저장하는 것이 좋습니까? 제품 GUI를 생성 할 때 비즈니스 관련 카테고리 만 채우기 때문에 이러한 규칙이 GUI에서 시행되는 모든 관련 테이블의 경우도 마찬가지입니다.

여러분 중 일부는 알 수 있듯이 ROO는 각 CRUD 작업에 대한 서비스를 만드는 방법을 사용합니다. 따라서 business_id를 제품과 함께 저장하지 않기로 결정하면 관련 비즈니스에 속하지 않는 카테고리 ID로 서비스를 호출하려고하면 비즈니스 규칙이 우회 될 수 있습니다. 또는 데이터베이스 디자인을 그대로두고 서비스 보안에 중점을 두는 것이 좋습니다.

관련 장단점이 있으시면 여기에 게시하십시오.

미리 감사드립니다.) !!!!

답변

0

당신이 직면 한 문제를 다중 소유라고합니다. 당신은 여기에 옵션의 장단점에 대한 자세한 내용을보실 수 있습니다 :

http://msdn.microsoft.com/en-us/library/aa479086.aspx

나는 세입자 당 스키마 접근 방식을 선호합니다.

당신이 자동화하는 보스 최대 절전 모드의 멀티 테넌시 (multi-tenancy) 기능을 사용할 수 있습니다 :

http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch16.html

관련 문제