SQLD - PART1 - Chapter1 데이터 모델링의 이해
모델
현실세계에서 일어날 수 있는 다양한 현상에 대해 표기법에 의해 표현해 놓은 모형. ㅤ ㅤ ㅤ
데이터베이스 모델링
현실 세계를 단순화하여 표현하는 기법. 모델을 만들어 가는 일이라고도 볼 수 있다. ㅤ ㅤ
ㅤ
모델링의 특징 (추단명)
1.추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현하는 것이다. 2.단순화(Simplification) : 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미이다. 3.명확화(Clarity) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미이다. ㅤ ㅤ ㅤ
모델링의 세 가지 관점(데이터, 프로세스, 데이터와 프로세스)
- 데이터 관점(What, Data)
- 데이터 위주의 모델링이다. 어떤 데이터들이 업무와 얽혀 있는지. 그리고 그 데이터 간에는 어떤 관계가 있는지에 대해서 모델링 하는 방법
- 프로세스 관점(How, Process)
- 프로세스 위주의 모델링이라고 할 수 있다. 이 업무가 실제로 처리하고 있는 일은 무엇인지 또는 앞으로 처리해야 하는 일은 무엇인지를 모델링 하는 방법.
- 데이터와 프로세스의 상관 관점(Data vs. Process, Interaction) - 데이터와 프로세스의 관계를 위주로 한 모델링이라고 할 수 있다. 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지를 모델링하는 방법이다. ㅤ ㅤ
모델링의 세 가지 단계(개논물)
- 개념적 보델링(Conceptual Data Modeling)
- 전사적 데이터 모델링 수행 시 행해지며 추상화 레벨이 가장 높은 모델링이다. 이 단계에서는 업무중심적이고 포괄적인 수준의 모델링이 진행된다.
- 논리적 데이터 모델링(Logical Data Modeling)
- 재사용성이 가장 높은 모델링으로 데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현하는 단계이다.
- 물리적 데이터 모델링(Physical Data Modeling) - 실제 데이터베이스로 구현할 수 있도록 성능이나 가용성 등의 물리적인 성격을 고려하여 모델을 표현하는 단계이다. ㅤ ㅤ ㅤ
데이터의 독립성
- 3단계 스키마 구조를 이용하여 독립성을 구현할 수 있음!
- 3단계 스키마 구조 (외개내! => 우리 독립성은 외국에 사는 개네?)
- 외부 스키마(External Schema)
- 사용자의 관점 : Multiple User’s View 단계로 각 사용자가 보는 데이터베이스의 스키마를 정의한다.
- 개념 스키마(Conceptual Schema)
- 통합된 관점 : Community View of DB 단계로 모든 사용자 관점을 통합한 조직 전체의 관점의 통합적인 표현이다. DB에 저장되는 데이터들을 표현하고 데이터들 간의 관계를 나타낸다.
- 내부 스키마(Internal Schema)
- 물리적인 관점 : Physical Representation 단계로 물리적인 저장 구조나 컬럼 정의 인덱스 등이 포함한다.
- 외부 스키마(External Schema)
?? : 아까 3단계 스키마 구조가 독립성을 준다고 했는데 무슨 독립성을 주는건데? ㅤ 독립해서 논물이 난다~
- 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향받지 않는다.
- 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않는다.
ㅤ ㅤ
ERD(Entity Relationship Diagram)
- 시스템에서 어떤 엔티티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램!
- ERD 표기 방식은 다음과 같다.
- Peter Chen: 주로 대학교제에서 쓴다. 자주 안 씀.
- IDEFIX : 실무에서 쓰거나, ERWin(ERD를 그리는 모델링 툴)에서 씀.
- IE/Crow’s Foot : 가장 많이 씀. ERWin, ERStudio에서 사용됨.
- Min-Max/ISO : 각 엔티티의 참여도를 좀 더 상세하게 나타내는 표기법
- UML : 소프트웨어 공학에서 주로 사용되는 모델이다.
- Case*Method/Breaker : Oracle에서 쓰며, Crow’s Foot과 비슷하다고 한다. ㅤ
필자가 공부하는 책에서는 3번 IE/Crow’s Foot을 쓴다고 한다. IE/Crow’s Foot을 더 알아보자!
저기서 실선은 식별자 관계, 점선은 비식별자 관계임!
ㅤ
ㅤ
ERD 작성순서 ( 도배관명참여 => 도배하다가 관명을 따라 참여했다!)
- 엔티티를 도출하고 그린다.
- 엔티티를 적절하게 배치한다.
- 엔티티 간의 관계를 설정한다.
- 관계명을 기입한다.
- 관계의 참여도를 기입한다.
- 관계의 필수/선택 여부를 기입한다. ㅤ ㅤ ㅤ
앤터티(Entity)
위에서 매우 엔터티라는 단어를 많이 사용했는데
아니 그래서 그게 뭔데 자꾸 쓰는 거임?
이라는 생각이 충분히 들 수 있다.
엔터티는…
- 사전적인 의미는 독립체임.
- DB에서는 식별이 가능한 객체라는 의미임.
=> 둘을 PPAP하면 쉽게 말해서 엔터티는 업무에서 쓰이는 데이터를 용도 별로 분류한 그룹임! ㅤ ㅤ ㅤ
아 오케이 한마디로 데이터를 적당히 분류해둔거 아니야? 그럼 특징은 뭐가 있지??
특징으로는…
- 당연하게도 업무에서 쓰이는 정보여야 함.
- 유니크함을 보장할 수 있는 식별자가 있어야 함. (예들어 상품고유번호 같은거…)
- 2개 이상의 인스턴스를 가지고 있어야 함.
- 반드시 속성을 가지고 있어야 함.
- 다른 엔터티와 1개 이상의 관계를 가지고 있어야 함.(회원 - 주문, 주문 - 상품…)
ㅤ ㅤ
그…그럼 분류는 어떻게 되는데?
분류로는…
-
유형 vs 무형 (유개사) 유형 엔티티 : 물리적인 형태가 존재함. 안정적이고 지속적임! 개념 엔티티 : 물리적인 형태가 없음. 개념적임! 사건 엔티티 : 행위를 함으로써 발생. 빈번하며 통계 자료로 이용 가능함!
-
발생시점 (발생시점은 귀중해(기중행)~) 기본 엔티티 : 독립적으로 생성됨. 자식 엔터티를 가질 수 있음. 중심 엔터티 : 기본 엔터티로부터 파생, 행위 엔터티 생성. 행위 엔터티 : 2개 이상의 엔터티로부터 파생
ㅤ ㅤ ㅤ
속성
- 사물이나 개념의 특징을 설명해줄 수 있는 항목들을 속성이라고 한다.
- 의미 상 더 이상 쪼개지지 않는 레벨이어야 하고 프로세스에 필요한 항목 이여야 한다. ㅤ ㅤ ㅤ
속성값
- 하나의 속성은 한 개의 속성 값만 가질 수 있다.
- 만약 하나의 속성이 여러 개의 속성을 가지고 있다? 그럼 별도의 엔터티로 분리하는게 맞다.
ㅤ ㅤ
엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티 => 두 개 이상의 인스턴스를 가짐.
- 한 개의 인스턴스 => 두 개 이상의 속성을 가짐.
- 한 개의 속성 => 하나의 속성값 가짐. ㅤ ㅤ ㅤ
분류
-
특성에 따른 분류 - 기본속성 : 업무 프로세스 분석을 통해 바로 정의가 가능한 속성. 대부분이 기본속성임! - 설계속성 : 업무에 존재하지는 않지만 설계하다 보니 필요하다고 판단되어 도출해낸 속성 - 파생속성 : 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성
-
구성 방식에 따른 분류 - PK(Primary Key) 속성 : 엔터티의 인스턴스들을 식별할 수 있는 속성 - FK(Foreign Key) 속성 : 다른 엔터티의 속성에서 가져온 속성 - 일반속성 : PK, FK를 제외한 나머지 속성 ㅤ ㅤ ㅤ
도메인
- 속성이 가질 수 있는 속성 값의 범위
ㅤ ㅤ ㅤ
관계
- 엔터티와 엔터티와의 관계를 의미함.
- 어떠한 연관성이 있는지 타입을 분류하여 존재 관계와 행위 관계로 나눌 수 있다.
-
존재관계
- 존재 자체로 연관성이 있는 관계(직원과 부서, 학생과 학과, 엄마와 아기)
-
행위관계
- 특정한 행위를 함으로써 연관성이 생기는 관계(회원과 주문, 학생과 출석부)
ㅤ ㅤ
표기법 (명차선~)
- 관계명 : 관계의 이름
- 관계차수 : 관계에 참여하는 수
- 관계선택사양 : 필수인지 선택인지의 여부
ㅤ ㅤ ㅤ
식별자
-
속성 중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성을 의미한다.
-
주식별자
- 기본키,PK(Primary Key)에 해당하는 속성이다.
- 하나의 속성이 주식별자가 될 수도 있고 여러 개의 속성이 주식별자가 될 수도 있다.
- 유일성 : 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다.
- 최소성 : 유일성이 보장하는 최소 개수의 속성이어야 한다.
- 불변성 : 속성값이 되도록 변하지 않아야 한다.
- 존재성 : 속성값이 NULL일 수 없다.
-
분류
-
대표성 여부
- 주 식별자 : 유최불존을 가진 대표 식별자. 다른 엔터티와 참조 관계로 연결됨.
- 보조 식별자 : 인스턴스 식별은 되나 대표 식별자가 아님. 참조 관계로 연결 X.
- 스스로 생성되었는지 여부
- 내부식별자 : 엔터티 내부에서 스스로 생성된 식별자
- 외부식별자 : 다른 엔터티에서 온 식별자. 다른 엔터티와의 연결고리 역활
- 단일 속성의 여부
- 단일식별자 : 하나의 속성으로 구성된 식별자
- 복합식별자 : 두 개 이상의 속성으로 구성된 식별자
- 대체 여부
- 원조식별자 : 업무 프로세스에 존재하는 식별자. 가공되지 않은 원래의 식별자.
- 대리식별자 : 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자!
- 식별자 VS 비식별자 관계
- 식별자 관계
- 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계이다.
- 주식별자는 반드시 존재해야됨. => 부모 엔터티가 있어야 생성가능하며 단일 식별자인지 복합식별자인지에 따라 1:1이나 1:M이거나가 결정된다.
- 비식별자 관계
- 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계이다.
- 식별자 관계