관계
M:N 관계를 그대로 둠
학생-과목을 바로 연결하면 관계형 DB에서 관계를 담을 자리가 없어집니다.
수강 같은 교차 테이블로 분해해 학생ID·과목ID·성적을 함께 저장합니다.
서울시 강남구 역삼동 123처럼 한 값으로 두면 검색, 정렬, 부분 수정 기준이 흐려집니다.
시·구·동·상세로 나누거나, 정규화 수준에 맞게 별도 구조로 빼서 다룹니다.
주문총액을 SUM(수량 × 단가)와 별도로 저장하면 갱신 이상이 생기기 쉽습니다.
기본은 계산으로 유도하고, 반정규화가 필요하면 누가 언제 같이 갱신하는지 규칙을 둡니다.
1:N과 M:N을 잘못 잡으면 제약 조건과 화면 흐름이 실제 업무와 어긋납니다.
학생은 학과 하나만? 복수전공 허용? 같은 규칙을 먼저 확인한 뒤 관계 수를 정합니다.
현재 상태만 있으면 pending → paid → shipped → delivered의 변화와 감사 추적이 사라집니다.
상태 변경이 중요한 도메인이라면 이력 테이블 필요 여부를 함께 판단합니다.