본문 바로가기
IT/Interview

20.10.16 면접 스터디

by YEON-DU 2020. 10. 16.
반응형

정규화와 비정규화

정규화의 의미와 하는 이유에 대해 설명하시오.

정규화의 장점과 단점

비정규화의 의미와 하는 이유에 대해 설명하시오.

비정규화의 장점과 단점

 

정규화는 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업이다. 제1정규형, 제2정규형, 제3정규형, BC정규형, 제4정규형, 제5정규형이 존재한다.

 

정규화는 데이터베이스를 사용하다보면 갱신 이상, 삽입 이상, 삭제 이상과 같은 것들이 발생할 수 있는데, 이를 방지하여 데이터 무결성을 보장하기 위해 정규화를 하게 된다.

 

제1정규형 : 도메인이 원자값

제2정규형 : 부분적 함수 종속 제거

제3정규형 : 이행적 함수 종속 제거

BC정규형 : 결정자이면서 후보키가 아닌 것 제거

제4정규형 : 다치 종속 제거

제5정규형 : 조인 종속성 이용

 

반정규화

시스템의 성능향상, 개발의 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로 의도적으로 정규화 원칙을 위배하는 행위이다.

반정규화를 사용하는 이유는 일례로 기존의 정규화된 테이블이 과도한 조인연산으로 오버헤드가 많이 발생할 때, 의도적으로 모델을 통합하는 방식으로 조인연산을 줄일 수 있고, 이러한 방식으로 성능 향상을 기대하여 사용하게 된다.

 

정규화를 하게 되면 데이터베이스를 변경 시에 이상 현상을 제거할 수 있고, 확장성 있는 테이블을 만들 수 있게 된다. 그러나 조인 연산이 많아지기 때문에 질의에 대한 응답시간이 느려질 수 있다.

반정규화를 하게 되면 조인 연산이 감소되어 질의에 대한 응답시간이 빨라질 수 있지만, 데이터의 무결성이 깨질 수 있다. 또한 조회 외의 입력, 수정, 삭제 질의문에 대한 응답 시간이 늦어질 수 있다.

 

JOIN

JOIN은 무엇이며, 사용하는 이유는 무엇인가?

 

두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법. 자신이 검색하고 싶은 컬럼이 다른 테이블에 있을 경우 주로 사용하며, 여러 개의 테이블을 마치 하나의 테이블인 것처럼 활용하는 방법이다.

주로 기본키나, 외래키로 두 테이블을 연결한다.

 

조인의 종류에는 INNER JOIN, OUTER JOIN, SELF JOIN 등이 있다.

INNER JOIN은 테이블의 교집합, OUTER JOIN은 자기 자신과 다른 테이블과의 교집합을 더한 결과이다. OUTER JOIN 중 FULL OUTER JOIN은 합집합에 해당한다.

 

INNER JOIN은 EQUI, NATURAL, CROSS JOIN으로 구분된다.

EQUI JOIN의 경우 두 테이블의 한 열의 값이 같은 지를 비교하여 JOIN하게 되는 것이고, NATURAL JOIN의 경우 대상 테이블의 컬럼을 비교하여 같은 이름을 가진 컬럼은 하나만 추출한다. CROSS JOIN은 연산에 참여한 모든 테이블들과 나올 수 있는 결과가 추출되게 된다.

 

SELF JOIN은 원하는 데이터들이 하나의 테이블에 있을 때 사용한다.

 

 

RDBMS와 NOSQL차이

 

관계형 데이터베이스는 데이터를 테이블 형태로 저장하고, 데이터는 row에, 속성은 column에 저장하며 속성에는 데이터 유형을 저장한다. 데이터의 분류, 정렬, 탐색 속도가 빠르고, SQL을 통해 데이터를 다루게 된다.

Ex. MySQL

 

NOSQL은 Not Only SQL이라는 의미로 테이블과 같은 개념인 컬렉션이라는 형태로 데이터를 관리한다. 데이터 간의 관계를 정의하지 않아서 테이블 간의 조인이 불가능하다. 관계형 데이터베이스에 비해 훨씬 더 대용량의 데이터를 저장할 수 있다. 관계형 데이터베이스는 스키마에 맞추어 데이터를 관리하지만, NOSQL은 스키마가 없거나 느슨한 스키마를 사용하여 비교적 자유롭게 데이터를 관리할 수 있다.

Ex. MongoDB

반응형

'IT > Interview' 카테고리의 다른 글

손코딩 면접 준비  (0) 2020.10.28
20.10.20 면접 스터디  (0) 2020.10.26
20.10.12 면접 스터디  (0) 2020.10.12
20.10.09 면접 스터디  (0) 2020.10.09
20.10.06 면접 스터디  (0) 2020.10.09

댓글