표를 어떻게 나누고 이을 것인가. 엔터티·속성·관계·식별자에서 시작해 정규화와 성능까지 이어진다.
0 / 19개 학습 · 실제 시험 10문항 20점 · 4문항 미만이면 과락
용어를 말로만 외우면 다 맞는 말처럼 들린다. 식별자·비식별자, 정규화 단계처럼 '무엇이 어떻게 다른가'로 묶어 두어야 선지에서 갈린다.
데이터 모델링의 세 단계 — 개념·논리·물리
개념 모델링은 무엇을 다룰지, 논리 모델링은 어떤 표로 나눌지, 물리 모델링은 실제 데이터베이스에 어떻게 만들지를 정한다.
3층 스키마 — 외부·개념·내부
외부 스키마는 사용자가 보는 모습, 개념 스키마는 조직 전체가 합의한 모습, 내부 스키마는 실제로 저장된 모습이다.
엔터티가 되기 위한 조건
업무에서 관리해야 하고, 인스턴스가 두 개 이상이며, 속성을 가지고, 다른 엔터티와 관계가 있어야 한다.
속성의 갈래 — 기본·설계·파생
기본속성은 업무에서 그대로 온 것, 설계속성은 만들어 붙인 것(코드 등), 파생속성은 다른 값에서 계산해 낸 것이다.
관계의 차수와 선택성
차수(카디널리티)는 몇 건이 이어지는가(1:1, 1:M, M:N), 선택성(옵셔널리티)은 반드시 있어야 하는가를 말한다.
식별자 — 주식별자의 네 가지 조건
유일성(한 줄을 가려낸다), 최소성(더 줄일 수 없다), 불변성(값이 바뀌지 않는다), 존재성(NULL 이 아니다).
식별 관계와 비식별 관계
부모의 식별자가 자식의 주식별자에 포함되면 식별 관계, 일반 속성으로만 들어가면 비식별 관계다.
정규화 — 1차부터 BCNF까지
1차는 값을 쪼개고, 2차는 부분 종속을 없애고, 3차는 이행 종속을 없애며, BCNF는 결정자가 모두 후보키가 되게 한다.
반정규화 — 일부러 되돌리는 것
조회 성능을 얻으려고 정규화를 일부 되돌려 중복을 허용하는 것. 대가로 데이터 정합성 관리 부담이 생긴다.
엔터티를 나눌 때 — 수직·수평 분할
수평 분할은 행을 기준으로 쪼개는 것(연도별 등), 수직 분할은 열을 기준으로 쪼개는 것(자주 쓰는 열만 따로)이다.
분산 데이터베이스의 투명성
여러 곳에 나뉘어 있어도 한 곳에 있는 것처럼 쓰게 하는 성질. 위치·분할·중복·장애·병행 투명성이 있다.
데이터 모델링을 하는 이유와 세 가지 유의점
중복·비유연성·비일관성을 없애려고 모델링을 한다. 같은 값을 여러 곳에 두지 않고, 업무가 바뀌어도 구조를 덜 고치게 하며, 서로 어긋나는 값이 생기지 않게 하는 것이다.
엔터티의 갈래 — 유형·개념·사건, 기본·중심·행위
만질 수 있는지로 나누면 유형·개념·사건이고, 다른 엔터티에 기대는 정도로 나누면 기본·중심·행위다.
도메인과 다중값 속성
도메인은 그 속성이 가질 수 있는 값의 범위이고, 한 칸에 값이 여러 개 들어가는 다중값 속성은 별도 엔터티로 떼어 내야 한다.
식별자의 분류 — 대표성·구성·생성 위치
대표성으로 주식별자와 보조식별자, 구성으로 단일식별자와 복합식별자, 어디서 왔는지로 내부식별자와 외부식별자로 나뉜다.
본질식별자와 인조식별자
본질식별자는 업무가 원래 갖고 있던 값으로 한 줄을 가려내는 것이고, 인조식별자는 그것이 마땅치 않을 때 일련번호를 새로 만들어 붙이는 것이다.
관계는 곧 조인이다
모델에서 그린 관계선은 SQL 에서 조인 조건이 된다. 관계를 제대로 잡지 않으면 조인할 길이 없거나, 엉뚱한 행이 곱해진다.
모델이 표현하는 트랜잭션
관계를 필수로 그리면 '두 건이 반드시 함께 생겨야 한다'는 뜻이 되어, 그 둘은 한 트랜잭션으로 묶여야 한다.
모델에서의 NULL — 선택 속성이 남기는 자리
속성을 선택으로 두면 값이 없는 자리가 NULL 로 남고, 그 NULL 은 나중에 집계와 조인의 결과를 바꾼다.