2012-09-11 3 views
0

저는 yii에 응용 프로그램을 구축하고 있습니다. AR과 DAO 모두에 대한 경험이 있지만, 응용 프로그램의 데이터가 무거워서 모든 CRUD 작업에만 DAO를 사용하게 될 것입니다.Yii 및 데이터베이스 접근 방식

그러나 어떤 종류의 DB 스키마를 사용해야 할 지 잘 모르겠다. RDBMS에 익숙하지만 데이터 유효성 검사/뷰에 데이터를 표시 할 때 해당 모델의 개체를 만들어야한다. 내 응용 프로그램의 사용자가 채우기/채우지 않기로 선택할 수있는 다양한 필드가 있습니다. 필드는 다음과 같은 여러 유형의 별도의 엔티티로 구분
1) 주소 관련 분야()
2) 전화 번호()
3) 학교인가 (문자열 데이터)
4) 틈새 Specialiation (문자열 데이터)
드롭 다운에서 선택 5) 타이밍()
6) 시설 (문자열 데이터) 등

그리고,이 모든 분야의 약 30 % 참고.

RDBMS를 디자인하는 동안 자연스럽게 한 전화 번호를 다른 테이블에 넣거나 다른 주소로 붙여 넣는 것이 좋습니다. 단일 뷰를 표시하기 위해 약 10-20 개의 모델 객체를 만들려고합니다. 그러나 내가 말하는이 단일보기 페이지는 응용 프로그램의 핵심이며 여기서는 기능을 손상시킬 수 없습니다.

이러한 모든 고려 사항을 감안할 때 미래에 확장 성 및 성능을 고려해야 할 경우 RDBMS는 실제로 갈 방법입니다.

다른 데이터베이스 옵션에는 어떤 것이 있습니까?

+0

많은 관계가있는 DB> 4'000'000 레코드에서 yii의 앱을 사용할 때 DAO 또는 AR 쿼리에 차이가 없습니다. 하지만 아칸소에서는 코드를 더 빠르게 작성하고 DB의 모든 멤버가 변경되지 않고 DAO를 사용하면 전체 프로젝트를 다시 작성하지 않습니다. – Sergey

+0

좋은 소리는 있지만 Cmodel/Cactive 레코드의 typ 선언은 일반적으로 컨트롤러에서 보시겠습니까? 내 응용 프로그램을 다 끝내면 Cmodel 클래스의 20 개 객체를 내 견해에 전달할 것입니다. –

+0

그것은 관계와 함께 실현하고, 나는 특별 선택하거나 발견하지 않습니다. 'Post'-> 'Author'-> 'Address.email'과 같습니다. 그냥 'one select' 쿼리와 관련하여'함께 '설정합니다. – Sergey

답변

0

Yii와 AR 사용의 진정한 힘은 '관계'(원래 1.1 릴리스 이후에 추가 된 수많은 기능 포함)를 활용할 때입니다. 또한 'scope'를 정의하는 것은 'with'를 사용하는 것과 마찬가지로 매우 강력 할 수 있습니다. 이 모든 기능을 통해 관계 정의를 한 번 작성할 수 있습니다. 약간의 시간이 걸릴 수 있지만, 그 때마다 올바른 사용법을 알게되며, AR이 빛날 때 결합 할 수 있습니다.

모델 개체를 만드는 데 약간의 오버 헤드가 있습니다. Yii의 광범위한 캐싱 기능을 사용하여 여전히 높은 성능을 얻을 수 있습니다. 필자는 측정하지는 않았지만 캐싱이있는 AR이 DAO를 사용하지 않으면 성능이 크게 향상 될 수 있다고 쉽게 판단 할 수 있습니다.

관련 문제