참고 도서: 2022 유선배 SQL개발자 과외노트
참고 자료: Wikipedia, oracle.com, oracletutorial.com
** SQLD 자격 시험을 준비하는 분들께 도움이 되고자 정리한 내용을 올리고 있습니다.
** 암기가 필요한 부분은 계속 보면서 외워주세요.
** 실습 환경 구성이 어려운 분들은 아래 링크를 이용하세요.
Oracle Live SQL 👈 클릭
** 오류가 있다면 댓글 주세요!
1.1 데이터 모델의 이해
1.1.1 모델링이란?
🌎현실 세계에서 일어날 수 있는 다양한 현상에 대해서 일정한 🖊 표기법으로 표현한 모형이라고 할 수 있으며 이런 모형을 만들어가는 일이라고 할 수 있다.
1.1.2 모델링의 특징
-
추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현하는 것이다.
-
단순화(Simplicity) : 🤔복잡한 현실 세계를 일정한 형식으로 단순하고 쉽게 표현하는 것이다.
-
명확화(Clarity) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술하는 것이다.
1.1.3 모델링의 세 가지 관점
-
데이터 관점 : 데이터들이 어떤 업무과 얽혀있는지, 데이터 간에 어떤 관계가 있는지 모델링하는 것이다.
-
프로세스 관점 : 업무가 실제로 처리하는 일과 앞으로 처리해야 할 일을 중심으로 모델링하는 것이다.
-
데이터와 프로세스의 상관 관점 : 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지 모델링하는 것이다.
1.1.4 모델링의 3단계
개념적 데이터 모델링 → 논리적 데이터 모델링 → 물리적 데이터 모델링
1.1.5 데이터의 독립성 (ANSI - SPARC) #외개내 논물
-
3단계 스키마 구조
-
외부 스키마 : 🧍♂️사용자의 관점, 각 사용자가 보는 스키마를 정의한다.
-
개념 스키마 : 통합된 관점, 모든 사용자가 보는 스키마를 통합하여 전체 DB를 나타낸다.
-
내부 스키마 : 👩🔬물리적 관점, 실질적인 데이터의 저장 구조 및 컬럼, 인덱스 등이 포함된다.
-
-
3단계 스키마 구조가 보장하는 독립성
-
논리적 독립성 : 개념 스키마 변경에도 외부 스키마는 영향받지 않는다.
-
물리적 독립성 : 내부 스키마 변경에도 외부/개념 스키마는 영향받지 않는다.
-
1.1.6 ERD
-
ERD 표기 방식
#피까유 (피터 챈, 까마귀, 유엠엘)
-
Peter Chan : 주로 🎓대학교에서 사용하는 표기법, 실무에서 사용하는 경우는 드물다.
-
IDEFIX : 실무에서 드물게 사용되며 ERWin에서 사용되는 모델이다.
-
IE/Crow’s Foot : 가장 많이 사용되는 모델이며 ERWin, ERStudio에서 사용되는 모델이다.
-
Min-Max/ISO : 각 엔터티의 참여도를 좀 더 상세하게 나타낸다.
-
UML : 소프트웨어 공학에서 주로 사용된다.
-
Case Method/Barker : Oracle에서 사용되는 모델이다.
-
-
ERD 작성 순서
#도배관-설명참여
- 엔터티 도출 → 엔터티 배치 → 엔터티 간의 관계 설정 → 관계명 기입 → 관계 참여도 기입 → 관계의 필수/선택 여부 기입
1.2 엔터티
1.2.1 엔터티란?
데이터베이스에서 식별이 가능한 객체라는 의미를 가지고 있다.
엔터티 : Table, 인스턴스 : Row, 속성 : Column
1.2.2 엔터티의 특성
-
👨💻업무에서 사용하는 정보여야 한다.
-
💍유니크함을 보장할 수 있는 식별자가 있어야 한다.
-
2개 이상의 인스턴스를 가지고 있어야 한다.
-
반드시 속성을 가지고 있어야 한다.
-
다른 엔터티와 1개 이상의 👬관계를 가지고 있어야 한다.
1.2.3 엔터티의 분류
-
유무형 엔터티
-
유형 엔터티 : 🤖물리적 형태가 있다. e.g. 제품, 사원
-
개념 엔터티 : 👻물리적 형태가 없다. e.g. 부서, 실적
-
사건 엔터티 : 🕺행위에서 발생한다. e.g. 주문
-
-
발생시점
-
기본 엔터티 : 독립적으로 생성된다. 🐣자식 엔터티를 가질 수 있다. e.g. 상품
-
중심 엔터티 : 기본 엔터티에서 파생된 엔터티다. 행위 엔터티를 생성한다. e.g. 주문
-
행위 엔터티 : 2개 이상의 엔터티로부터 파생된다. e.g. 주문이력
-
1.2.4 엔터티 이름을 정의할 때 주의할 점
-
👩💻업무에서 실제로 쓰이는 용어 사용
-
한글은 약어를 생성하지 않고 영문은 대문자로 표기
-
단수 명사로 표기하고 띄어쓰기는 하지 않음
-
다른 엔터티와 의미상 중복될 수 없음
-
해당 엔터티가 갖고 있는 데이터가 무엇인지 명확히 표현
1.3 속성
1.3.1 속성이란?
속성은 의미상 더 이상 ✂️쪼개지지 않는 단위이며 업무에 필요한 데이터로 구성된다.
1.3.2 속성값
-
각각의 속성은 값을 가지며 인스턴스를 구체적으로 나타내주는 데이터이다.
-
하나의 속성은 하나의 값만 가질 수 있다.
1.3.3 엔터티, 인스턴스, 속성, 속성값의 관계
-
한 개의 엔터티는 두 개 이상의 인스턴스를 갖는다.
-
한 개의 인스턴스는 두 개 이상의 속성을 갖는다.
-
한 개의 속성은 하나의 속성값만 가진다.
1.3.4 속성의 분류
-
특성에 따른 분류
-
기본속성 : 업무 프로세스에서 추출하여 바로 정의한 모든 속성이다. e.g. 사원이름: Theodore
-
설계속성 : 데이터 모델링을 위해서 새로 만들거나 변형한 속성이다. e.g. 부서번호: 001 (경영관리)
-
파생속성 : 다른 속성의 속성값을 계산하거나 다른 속성에 영향을 받아 발생하는 속성이다. e.g. 결제금액 (원가 - 할인 - 포인트 = 결제금액)
-
-
구성방식에 따른 분류
-
기본키(PK) : 엔터티의 인스턴스를 식별할 수 있는 속성이다.
-
외래키(FK) : 다른 엔터티의 속성에서 가져온 속성이다.
-
일반속성 : PK, FK를 제외한 모든 속성이다.
-
1.3.5 도메인
하나의 속성이 가질 수 있는 같은 타입의 값의 범위를 도메인이라고 한다.
1.4 관계
1.4.1 관계란?
엔터티는 서로 연관성이 있을 경우 관계를 맺을 수 있다. 어떤 연관성이 있는지 타입을 분류하여 존재 관계와 행위 관계로 나눌 수 있다. #존관행관
-
존재 관계 : 👨💼A사원이 B팀에 소속되어 있기 때문에 형성된 관계처럼 존재 자체로 연관성이 있는 관계이다.
-
행위 관계 : 고객과 주문처럼 특정한 행위에서 연관성이 생기는 관계이다.
1.4.2 표기법
-
관계명 : 명확한 문장으로 표현하고 현재형이어야 한다.
-
차수 : 관계에 참여하는 수 (1:1 / 1:M / N:M)
-
관계선택사양 : 필수 또는 선택 여부
1.5 식별자
1.5.1 식별자란?
속성 중에서 각각의 인스턴스를 유일하게 식별 및 구별할 수 있는 속성을 의미한다. e.g. 👨🎓학번, 사번
1.5.2 주식별자(PK)
-
유일성, 최소성, 불변성, 존재성을 만족하는 속성이다. 하나의 속성이 주식별자가 될 수도 있고 여러 개의 속성이 주식별자가 될 수도 있다.
-
유일성 : 각 인스턴스를 💍유니크하게 만들어 준다.
-
최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다.
-
불변성 : 속성값이 되도록 변하지 않아야 한다.
-
존재성 : NULL 값이 들어갈 수 없다.
-
1.5.3 분류
-
대표성 여부
-
주식별자 : 유일성, 최소성, 불변성, 존재성을 만족한다. 다른 엔터티와 관계를 맺는다. e.g. 주민번호, 부서번호, 사번
-
보조식별자 : 인스턴스를 식별할 수 있지만 주식별자가 아니다. 다른 엔터티와 관계를 맺지 않는다. e.g. 사원 엔터티에서 주식별자는 주민번호보다 사번이 알맞음
-
-
스스로 생성되었는지 여부
-
내부식별자 : 엔터티 내부에서 스스로 생성된 식별자이다.
-
외부식별자 : 다른 엔터티로부터 관계에 의해 온 식별자이다. 다른 엔터티와 연결고리 역할을 한다. e.g. FK를 의미함
-
-
단일 속성의 여부
-
단일식별자 : 하나의 속성으로 구성된 식별자이다.
-
복합식별자 : 두 개 이상의 속성으로 구성된 식별자이다. (복합식별자의 경우 우선순위가 중요함)
-
-
대체 여부
-
원조식별자 : 업무에 의해 만들어지는 가공되지 않은 식별자이다.
-
대리식별자(인조식별자) : 주식별자의 속성이 두 개 이상인 경우 속성들을 하나로 묶어서 사용하는 식별자이다. e.g. 복합식별자의 구성이 🤔복잡할 경우 생성
-
1.5.4 식별 관계 vs. 비식별 관계
-
식별 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계이다.
-
비식별 관계 : 👨👩👦부모 엔터티의 식별자가 자식 엔터티의 외래키가 되는 관계이다.