코딩이 쉬워진다!/03. SQL

SQLD 정리 - 데이터 모델과 SQL

javajin 2022. 3. 4. 20:26
728x90
반응형
SMALL

1. 정규화

- 정규형

1,2,3 정규형은 아래의 특징을 갖는다.

 

1정규형 1NF :

속성의 원자성과 관련이 있다. 010-0000-0111, 010-9999-1111 등의 다중값, 전화번호1, 전화번호2와 같은 반복 그룹이 이에 해당한다.

 

2정규형 2NF:

부분 종속과 관련이 있다. 부분종속은 일반 속성이 식별자의 일부 속성에만 종속되는 것이다.

 

3정규형 3NF:

이행 종속과 관련이 있다. 이행종속은 일반 속성이 다른 일반 속성에 종속되는 것이다.

 

2. 관계와 조인의 이해

관계형 db는 이름에서 관계가 무엇보다 중요하다. 관계형 db에서 데이터를 추출하고 가공할 때 sql을 사용하며, 엔터티 간 관계는 조인으로 표현한다. 조인에 대한 이해가 관계형 db를 사용하는데 있어 가장 핵심적인 요소일 수 밖에 없는 이유다.

 

조인에는 Inner 조인, Outer 조인, Cross조인 등이 있다.

Outer 조인 :

Left Outer 조인, Right Outer 조인, Full Outer 조인으로 세분화 된다.

식별/비식별 관계, 관계 차수, 관계의 선택사양, 속성의 선택사양 등의 개념을 정확히 이해해야한다.

 

3.모델이 표현하는 트랜잭션의 이해

관계를 고려한 트랜잭션 구현

자식 테이블 기준으로 부모테이블이 필수 관계라면, 부모 레코드를 먼저 입력해야한다.

자식 레코드 입력시, 외래 키에 부모의 식별자 값을 반드시 입력해야 하기 떄문이다.

 

부모엔터티 기준으로 자식 엔터티도 필수 관계라면, 부모와 자식 레코드 입력을 한 트랜잭션으로 묶어서 처리해야한다.

부모 레코드 입력은 성공했는데 자식레코드 입력은 실패하는 일이 생기면 안되기 떄문.

반드시 두 연산을 모두 성공하거나 모드 실패하도록 구현해야한다. 부모레코드와 함께 첫번째 자식 레코드를 입력한 이후, 두 번째 자식 레코드부터 는 개별적으로 입력할 수도 있는데, 이는 업무적인 트랜잭션 정의에 의해 결정한다.

 

4. Null 속성의 이해

null은 알수 없는 값, 아직 정해지지 않은 값

null 값을 포함한 연산 결과도 언제나 null

ex) 123 + null = null 

연산을 수행할 때 인자로 사용하는 속성들의 null 허용여부를 반드시 확인해야한다. 연산과정에서 null 값이 나타날 수 있다면 null을 특정 값으로 변화해 주는 nvl 함수를 같이 사용해야 한다.

 

컬럼간 연산할 때 null이 포함되면 항상 null을 반환하지만,

여러 행간에 sum, avg, min, max, count 함수로 값을 집계할 때는 함수 인자 값이 null인 행이 포함돼도 결과를 정상적으로 반환한다. null 값을 연산 대상에서 제되하기 떄문이다.

 

5. 본질식별자 vs 인조식별자

 

-본질식별자

엔터티에는 데이터를 유일하게 식별할 수 있는 속성이 반드시 존재해야 하며, 이를 식별자라고 한다.

식별자를 통해 그 엔터티의 본직을 규정하게 되므로 식별자 정의가 중요하다.

 

nvl(max(순번), 0) +1 => 인덱스 부여

 

*종속적이라는 표현 

함수 종속성이란 속성 간 대응 관계를 나타내는 개념이다.

함수 종속을 이해하려면, 결정자의 개념부터 알아야한다. 

A를 알면 B의 결정자가 된다.  A에 의해 B가 결정된다는 뜻이다. B는 종속자이다.

 

 

 

728x90
반응형
LIST

'코딩이 쉬워진다! > 03. SQL' 카테고리의 다른 글

SQLD 정리 - SQL 기본_(2) 함수  (0) 2022.03.04
SQLD 정리 - SQL 기본  (0) 2022.03.04
SQLD 정리 - 데이터 모델링의 이해  (0) 2022.03.04
db.cursor  (0) 2021.05.13
오라클 REGEXP_LIKE 정규식 / like 와 in  (0) 2021.03.03