프로그래밍에 익숙하지 않은 동료와 함께 일하고 있는데 ORM (및 SRP)의 개념을 설명하려고하지만 어떻게 든 실패합니다. 이것은 레일 애플 리케이션입니다.데이터 모델링 - 왜 플랫 테이블이 아닌가?
내가에서 일하고 있어요 응용 프로그램의 클래스 계층 구조는 다음과 같이 진행됩니다
-CallFlow
- 루트 (다형성)
--- RouteOptions
속성이 다양한 특정있다 경로 및 각 RouteType에는 자체 옵션 집합이 있습니다. 이상적으로 나에게 call_flows를위한 테이블, 각각의 라우트 타입을위한 테이블, 옵션을 가진 라우트 타입, 그 라우트 타입을위한 옵션 테이블이있을 것이다. 정말 거친 모형 :
Simple_route 및 outbound_route에는 옵션이 없습니다. 옵션이있는 경로 중에서 has_many 관계로, 해당 경로에 대한 옵션 배열을 제공합니다.
반대로 동료는 각 경로의 모든 필드를 call_flows 테이블에 지정하려고합니다.
그래서 당신은 모든 레코드에 적용되지 않는 필드를 하나 개의 큰 call_flows 테이블을했을 : 이것은 해당 모드의 모형입니다. 사실 소수의 의지 만 있습니다. 내 모델링 결정의 뒤에 나의 추론은 다음과 같습니다- 그것은 그것은 null 값의 양, 따라서 데시벨 크기를 줄일 수
- 기본 정규화 패턴을 다음과
- 는
- 그것은 기본 SRP 원칙을 다음으로 변경하는 것이 더 유연
나는 무엇이 있습니까? 새 프로그래머가 DB 정규화의 중요성을 이해하는 데 도움이되는 리소스가 있으면 좋을 것입니다.
감사합니다.
당신은 매우 설득력있게 설명했습니다. 동료가 당신의 설명을 받아 들일 수 없다면, 왜 그가 외부 자원에 의해 확신을 얻었 을까요? 이것은 개인적인 지도력/자기 주장 문제와 같습니다. –