두 부분 질문 :정규화 테이블 (ACID)
번호 1 : 다른 객체를 참조하는 객체 모델을 만드는 가장 좋은 방법은 무엇입니까 때 속성/속성의 일부 참조 된 객체의 이름이 항상 필요한 것은 아닙니다. PERSON 위의 예에서 사업
Person
+ PersonID
+ Name
+ Age
+ Sex
+ Skill
+ Business *
Business
+ BusinessID
+ Name
+ Address
+ CorporateVision (this is large)
: PERSON 현재의 고용주로 사업에 대한 참조가 두 객체가있는 경우
은 상상 해보세요.
데이터베이스에는 각 개체에 대해 두 개의 테이블이 있습니다. 코드에서 MVC 아키텍처 패턴을 사용하는 동안 각 객체에 대해 두 개의 클래스가 있습니다. 코드에서 PERSON 목적은 BUSINESS 객체에 대한 참조를 보유 부재 변수를 가질 것이지만,>PERSON - 데이터베이스는 BUSINESS간에 외래 키 관계를 가질 것이다.
이제 내가 및 신체의 컬렉션 열거하고 특정 회사에 근무하는 사람들의 총 수를 찾아하고 싶은 말은하자 (사업. 이름 기준).
MVC를 사용하지 않고 데이터베이스를 쿼리하고 카운트하는 함수를 만들 수 있습니다. 간단하고 효율적입니다.
는 MVC와 함께, 나는 회전에서, 하나는 이미 그것을 수행하지 않은 경우 ... BusinessFactory이 컬렉션을 확인할 것입니다 (참조에 대한 사업 객체를 인스턴스화 모든 PERSON 개체를 인스턴스화 할 필요가 먼저). 또한 영업을 반드시 입력해야합니다. CorporateVision 모든 개체에 대한 데이터베이스입니다. 그리고 이러한 기업의 대부분이 미디어 마케팅 회사이기 때문에 기업 비전의 대부분은 대형 텍스트 얼룩입니다. 따라서 우리가 필요한 모든 것이 비즈니스의 이름 일 때 데이터베이스에서 CorporateVision을 읽는 것은 매우 불필요합니다.
I가 코드에서 PERSON 객체를 변경함으로써이 문제를 해결할 수 : 그래서 지금은 내 PERSON 개체를 만들 때
Person
+ PersonID
+ Name
+ Age
+ Sex
+ Skill
+ BusinessID
+ BusinessName
, 나는이 사업에 가입하고 캐시 할 이름. 이제 BusinessName을 빠르고 효율적으로 가져올 수 있습니다 ... 그리고 여전히 전체를 얻을 수 있습니다. 영업 ID에 대한 조회를 수행하여 필요에 따라 개체를 만듭니다. 하지만 모델을 비정규 화했습니다 ... 그리고 방금 새로운 문제와 새로운 질문을 도입했습니다.
2 번 MVC는 다중 사용자 데이터베이스와의 동시성을 어떻게 처리합니까?
내 클라이언트 응용 프로그램이 위에서 언급 한 특정 비즈니스에 적합한 모든 사람들을 찾는 열거 형을 사용하는 동안 다른 사용자가 BUSINESS 개체 중 두 개를 병합했다고 가정 해 보겠습니다.
이제 모든 BusinessName 캐싱이 부실하므로 내 메모리 수집이 잘못되었습니다. 내가 방금 떠났 더라도 마찬가지 일 수있다. PERSON. 비즈니스으로 비즈니스 개체 참조 : 비즈니스 개체는 오래 될 것입니다.
요약 : : MVC를 사용하면 데이터 검색 효율이 떨어지고 응용 프로그램의 ACID가 손실 될 수도 있습니다. 아니면 MVC를 잘못 사용하고 있습니까?
[개체 - 관계 임피던스 불일치] (http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch) 답변을 찾은 것 같아요. –