이 인수를 체인 위로 올리는 일반적인 방법은 비용을 기반으로합니다. 간단하게 작업하면 코드가 줄어들고 버그가 줄어 듭니다. 시스템을 더 빨리 또는 더 많은 기능으로 구축 할 수 있으므로 더 많은 ROI를 창출 할 수 있습니다. 당신이 그 접근 방식으로 선내에 돈 관리자를 얻을 수 있다면, 그 또는 그녀는 당신이 팀에 조건을 지시하게 할 것입니다.극단적 인 over-normalization이 나쁜 데이터를 막는 것에 대한 반대 의견이 있지만, 복잡성으로 인해 더 많은 오류와 더 많은 데이터베이스 코드가 일반적으로 발생하기 때문에 이것이 사실이 아니라는 것을 발견했습니다.
여기에서 아키텍처 및 기술적 논증은 간단합니다. Ruby on Rails를 사용하기로 결정했습니다. 따라서 ActiveRecord 패턴을 사용하기로 결정했습니다. ActiveRecord 패턴은 데이터베이스 테이블이 개체 모델과 일치하도록 만들어집니다. 이것이 여기서 사용되는 패턴이며 많은 다른 장소에서 극단적 인 데이터 정규화를 적용하려는 모범 사례는 단순히 적용되지 않습니다. Patterns of Enterprise Application Architecture 사본을 사서 페이지 160에 작은 빨간 책갈피를 넣어 아키텍처 관점에서 패턴이 어떻게 작동하는지 이해할 수 있도록하십시오.
DBA 유형은 ActiveRecord가 쿼리 생성, 계단식 삭제, 낙관적 잠금, 자동 채워진 열, 버전 관리 (acts_as_versioned), 소프트 삭제 (acts_as_paranoid 포함) 등으로 얼마나 많은 작업을하는지 알지 못하는 경향이 있습니다. DBA가 유지 관리해야하는 사용자 정의 코드와 비교하여 이러한 작업을 수행하기 위해 잘 테스트 된 커뮤니티 지원 라이브러리 기능을 사용하는 것이 좋습니다.
DBA의 실제 문제는 다음과 같은 작업이 필요하다는 것입니다. 성능 모니터링, 코드에서 느린 쿼리 찾기, 인덱스 작성 및 백업 수행에 중점을 둡니다.
정상적인 스키마에 대한 정치적 전투가 끝나면 DataMapper로 전환하는 것이 좋습니다. PoEAA의 다음 패턴입니다. 당신이 할 수있는 다른 일은 객체 모델에 해당하는 뷰를 데이터베이스에 생성하는 것입니다. 이 방법을 사용하면 뷰를 기반으로하는 ActiveRecord 모델에서 많은 찾기 기능을 사용할 수 있지만 사용자 정의 삽입, 업데이트 및 삭제 방법이 있습니다.
"너무 복잡합니다"를 정의 할 수 있습니까? 도메인이 복잡하면 117 테이블이 반드시 과도하지는 않습니다. –
이것은 더 많은 탐구 질문입니다. 정확한 대답이있는 질문이 아닙니다 ... "가장 좋아하는 프로그래밍 견적은 무엇입니까?"질문과 비슷합니다. 따라서 저는 사람들이 자신의 창조적 인 답변과 설명을 제시하기를 희망했습니다. 나는 실제로 당신의 마지막 답변을 즐겼습니다. 그리고 더 창의적이되고 싶다면, 자유롭게 느끼십시오! – btelles