오늘 공부한 내용

  • 코드카타 2문제
  • 면접대비 2문항 공부
  • 마지막 프로젝트 제작 (하이브 생성, 수정 기능 구현 완료)

 

어려웠던 내용

  • 하이브 생성 기능 구현시 매개변수 작성에서 혼란을 겪었으나 팀원의 도움을 받아 작성후 기능 구현에 완료 하였습니다.

 

새로 알게된점

  • RDBMS의 정규화

정규화 정의 : 관계형 데이터베이스(RDBMS)의 설계에서 데이터를 중복 없이 효율적으로 저장하기 위한 과정,

이를 통해 데이터 베이스의 불필요한 중복을 최소화하고 데이터 일관성과 무결성을 유지 가능함.

 

 1 정규형

- 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것

 

 2 정규형

- 정규화를 진행한 테이블에 대해 완전 함수 종속 만족하도록 테이블을 분해하는 

- 완전함수종속 : 기본키가 구성하는 모든 속성에 종속되는 경우

- 테이블에서 기본키가 복합키(키1, 키2)로 묶여있을 때, 두 키 중 하나의 키만으로 다른 컬럼을 결정지을 수 있으면 안된다.

 

 3 정규형

- 정규화를 진행한 테이블에 대해 이행적 종속 없애도록 테이블을 분해하는 

- 이행적 종속 : 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에서 생성과 수정을 큰 문제 없이 작성 할 수 있었다.

이전에 있던 팀에서 의 작성방법을 많이 타긴 했지만 앞으로 다양한 프로젝트를 겪으면서 더 많은 방식을 익히면 어떤 상황이라도 바로바로 적용할수 있는 능력을 기르게 될것이라고 생각한다.

 

+ Recent posts