
Q1. mvc 패턴에 대해서 설명해주세요.
mvc 패턴은 model - view - controller로 이루어져있습니다.
model은 데이터의 관리 및 비즈니스 로직을 담당합니다.
view는 사용자 인터페이스를 제공하고 입출력을 담당합니다.
controller는 model과 view 사이에서 어플리케이션의 흐름을 제어합니다.
이러한 mvc 패턴의 장점으로는 각 구성요소가 독립적으로 개발되어 병렬 개발이 가능하며
사용자 인터페이스와 비즈니스 로직이 분리되어 코드를 깔끔하게 유지할 수 있습니다.
하지만 단점으로는 여러 구성요소로 코드를 분할하여 코드 양이 많아질 수 있고 규모가 작을 때는 오히려 복잡성이 증가할 수 있습니다.
추가 질문 : 스프링의 라이프사이클에 대해서 알고있는가
Filter -> DispatcherServlet -> HandlerMapping -> HandlerInterceptor -> controller -> Service -> Repository -> ViewResolver
Q2. RDBMS의 정규화에 대해 설명해주세요.
정규화는 데이터의 중복을 방지하고,
데이터를 구조화하여 무결성을 보장하고 저장 공간을 효율적으로 사용할 수 있습니다.
장점으로는 데이터 중복 최소화, 일관성 유지가 있고,
단점으로는 조인의 증가에 따른 응답시간저하 및 복잡성 증가가 있습니다.
1차 정규화는
하나의 필드에 하나의 값이 있어야한다.
2차 정규화
기본키 이외의 컬럼에 종속되면 안된다.
3차 정규화
이행 종속 제거
A - > B -> C
A -> C
BCNF
기본키가 아닌 컬럼이 결정자가 되어버린 상황에서 BCNF를 만족하지 않음
4,5차 정규화
너무 많은 조인으로 인해 복잡성을 증가해
성능이 저하될 수 있으며 오히려 데이터 무결성 유지가 어렵다