오늘 공부한 내용
- 코드카타 2문제
- 면접대비 2문항 공부
- 마지막 프로젝트 제작 (하이브 생성, 수정 기능 구현 완료)
어려웠던 내용
- 하이브 생성 기능 구현시 매개변수 작성에서 혼란을 겪었으나 팀원의 도움을 받아 작성후 기능 구현에 완료 하였습니다.
새로 알게된점
- RDBMS의 정규화
정규화 정의 : 관계형 데이터베이스(RDBMS)의 설계에서 데이터를 중복 없이 효율적으로 저장하기 위한 과정,
이를 통해 데이터 베이스의 불필요한 중복을 최소화하고 데이터 일관성과 무결성을 유지 가능함.
제 1 정규형
- 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것
제 2 정규형
- 제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
- 완전함수종속 : 기본키가 구성하는 모든 속성에 종속되는 경우
- 테이블에서 기본키가 복합키(키1, 키2)로 묶여있을 때, 두 키 중 하나의 키만으로 다른 컬럼을 결정지을 수 있으면 안된다.
제 3 정규형
- 제2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것
- 이행적 종속 : A → B, B → C면 A → C가 성립된다
BCNF 정규형
제3 정규화를 진행한 테이블'에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것
각 행(튜플, 가로줄)을 유일하게 식별하기 위해 사용하는 부분집합
- Primary key, Foreign key 란
키 : 관계(테이블)에서 행(튜플)을 식별하는 데 도움이 되는 속성
기본키 : 테이블의 모든 행을 고유하게 식별하는 열 또는 열 그룹
- null을 허용하지 않음, 유니크한 값
- 사용이유 : 기록 삭제, 수정 시 데이터 무결성을 확인하기 위함.
외래키 : 다른 테이블과의 관계를 맺기 위해 사용
- 여러개의 null값을 허용,
- 사용이유 : 두 개 이상의 테이블을 함께 연결, 데이터의 무결성과 일관성을 보장
객체 관계
1:1 = 한 테이블의 레코드가 다른 테이블의 레코드와 1:1로 대응, 한 명의 사용자가 한 개의 주소를 가지는 경우
단방향 : 외래 키 주인만이 외래 키 를 등록, 수정, 삭제할 수 있으며, 주인이 아닌 쪽은 오직 외래 키를 읽기만 가능
양방향 : 외래 키의 주인을 지정해 줄 때 mappedBy 옵션을 사용
1:N = 한 테이블의 레코드가 다른 테이블의 레코드와 1:N으로 대응, 한 명의 사용자가 여러 개의 주문을 가지는 경우
- N쪽에 외래키 성성, 1쪽이 연관 관계의 주인이 됨.
- 실무에서는 잘 사용하지 않으며 그 이유는 RDB 관점에서는 다수(Many)의 임장이 FK를 가져야 올바른 설계 이므로
N:1 = 1:N 관계의 반대에 해당 하는 경우, 여러 명의 선수가 한팀에 소속되는 경우
- N쪽에 외래키 생성, 연관 관계의 주인이 됨
N:M = 한 테이블의 레코드가 다른 테이블의 레코드와 N:M으로 대응, 여러 명의 학생이 여러 개의 과목을 수강하는 경우
관계형 데이터베이스는 정규화된 테이블 2개로 표현불가, 따로 테이블 생성
단점
- 중간 테이블에는 매핑정보만 들어가고 추가 데이터를 넣는 것이 불가능,
- 중간 테이블이 숨겨져 있어 쿼리가 예상못한 형태로 출현
오늘의 느낀점
기술 면접을 하루하루 준비하고 공부하면서 내가 배웠던 지식에대해 다시 한번 재정립하고 더 많은 내용을 배울수 있게 되었다.
또한 스파르타 에 온이후 내가 스스로 처음으로 프로젝트에서 CRUD에서 생성과 수정을 큰 문제 없이 작성 할 수 있었다.
이전에 있던 팀에서 의 작성방법을 많이 타긴 했지만 앞으로 다양한 프로젝트를 겪으면서 더 많은 방식을 익히면 어떤 상황이라도 바로바로 적용할수 있는 능력을 기르게 될것이라고 생각한다.
'개발자 일지 > TIL' 카테고리의 다른 글
스파르타 내일배움캠프 97일차 240110 (0) | 2024.01.11 |
---|---|
스파르타 내일배움캠프 96일차 240109 (1) | 2024.01.10 |
스파르타 내일배움캠프 92일차 240105 (2) | 2024.01.09 |
스파르타 내일배움캠프 91일차 240104 / 마지막 프로젝트 시작 (1) | 2024.01.06 |
스파르타 내일배움캠프 90일차 240103 / KPT (1) | 2024.01.06 |