이것만은 기억하자
1. 데이터베이스의 모델링은 '현실 세계를 추상화, 단순화 명확화하기 위해 일정한 표기법에 의해 표현하는 기법'이다.
- 현실 세계를 반영해야 한다.
- 단순화하여 표현해야 한다.
- 관리하고자 하는 데이터를 모델로 설계한다.
2. 모델링의 특징
- 추상화 : 아이디어나 개념을 간략하게 표현하는 과정
- 단순화 : 단순하고 쉽게 표현함
- 명확화 : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술함
*데이터 모델링 유의사항 : 중복 / 비유연성 / 비일관성
ㄴ 비유연성 : 연관성을 높여 (X)
ㄴ 비일관성 : 데이터 간의 연관관계에 대한 명확한 정의
3. 데이터 모델링의 세가지 관점
- 데이터 관점 : 데이터 위주의 모델링
- 프로세스 관점 : 프로세스 위주의 모델링
- 데이터와 프로세스의 상관 관점 : 데이터와 프로세스의 관계를 위주로 한 모델링
4. 모델링의 세가지 단계
1) 개념적 데이터 모델링 : 추상화 레벨 High, 업무 중심적, 포괄적인 수준의 모델링.
2) 논리적 데이터 모델링 : 재사용성이 가장 높은 모델링, 데이터베이스 모델에 대한 key , 속성 , 관계 등을 모두 표현
3) 물리적 데이터 모델링 : 실제 데이터베이스로 구현할 수 있도록 성능이나 가용성 등 물리적인 성격을 고려하여 표현
5. 3단계 스키마 구조(ANSI-SPARC 정의)
1) 외부 스키마 : 사용자의 관점, 멀티플 유저들의 뷰, 각 사용자가 보는 데이터베이스의 스키마
2) 개념 스키마 : 통합된 관점, 커뮤니티 뷰 단계, 모든 사용자가 보는 DB의 스키마를 통합하여 전체 DB를 나타내는 것.
DB에 저장되는 데이터들은 표현하고 데이터들 간의 관계를 나타낸다.
3) 내부 스키마 : 물리적인 관점, 물리적인 저장 구조, 실질적인 데이터의 저장 구조나 컬럼 정의, 인덱스 포함
TIP) 여러 사람들의 관점을 외부에서 수용해, 이런 여러 사람들의 관점을 통합하면 개념이 됨. 이 개념을 토대로 내부적으로 수용해서 실질적인 데이터의 저장 구조, 컬럼, 인덱스 정의함
6. 데이터의 독립성
1) 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마 영향 X
2) 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마 영향X
ㄴ 물리적인 DB구조가 바뀌어도 응용 프로그램과 개념 스키마 영향X > 물리적인 구조와는 별개로 개념 구조 변경 가능, 개념 구조와는 별개로 물리적인 구조 변경 가능
7. ERD (Entity Relationship Diagram)
시스템에 어떤 엔터티가 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램
- IE/Crow's Foot : 까마귀발 표기법, ERD를 그리는 모델링 툴, 자주 사용
- Case Method / Barker : 오라클에서 사용되는 모델로 Crow's Foot 과 비슷함
IE/Crow's Foot 표기법
엔터티 | |
0개 | |
|
1개 |
|
2개 이상 |
부모 엔터티의 식별자가 자식 엔터티의 주식별자(식별자 관계) | |
부모 엔터티의 식별자가 자식 엔터티의 일반 속성(비식별자 관계) |
8. ERD 작성 순서
ㄱ. 엔터티 도출하고 그린다
ㄴ. 엔터티 적절하게 배치한다
ㄷ. 엔터티 간의 관계를 설정한다
ㄹ. 관계명을 기입한다
ㅁ. 관계의 참여도를 기입한다
ㅂ. 관계의 필수/선택 여부를 기입한다
9. 엔터티 Table
사전적 의미 : 독립체. 식별이 가능한 객체
정보를 저장할 수 있는 어떤 것, 정보를 저장할 수 있는 사람/장소/물건/사건/개념 등
쉽게 말해, 엔터티는 업무에서 쓰이는 데이터를 용도별로 분류한 그룹
* 엔터티 : Table
* 인스턴스 : Row
* 속성 : Column
10. 각각의 엔터티는 속성을 갖는다.
ex.'상품'이라는 엔터티는 '상품코드', '상품명', '카테고리', '배송비' 와 같은 속성을 갖는다
상품 엔터티에 '새우깡'이라는 상품과 '허니버터칩'이라는 상품이 있다고 가정한다면 각각의 상품 엔터티의 인스턴스가 된다.
*엔터티 ( Table ): 상품
*속성 ( Column ): 상품코드, 상품명, 카테고리, 배송비
*인스턴스( Row ): 속성에 해당되는 각 데이터
11. 엔터티 특징
1) 업무에 쓰이는 정보여야함.
2) 유니크함을 보장할 수 있는 식별자가 있어야 함
3) 2개 이상의 인스턴스를 가지고 있어야 함
4) 반드시 속성을 가지고 있어야 함 (속성 없는 엔터티는 빈 깡통)
5) 다른 엔터티와 1개 이상의 관계를 가져야 함
12. 엔터티의 분류
1) 유형 vs 무형
유형 엔터티 : 물리적인 형태 존재, 안정적, 지속적 ex. 상품, 회원
개념 엔터티 : 물리적인 형태 없음, 개념적 ex. 부서,학과
사건 엔터티 : 행위를 함으로써 발생, 빈번함, 통계 자료로 이용 가능 ex. 주문, 이벤트 응모
2) 발생시점 (생성, 파생)
기본 엔터티 : 독립적으로 생성되며 자신만의 주식별자를 가지며 다른 엔터티의 부모 역할을 함 (자식 엔터티를 가질 수 있음) ex. 상품, 회원
중심 엔터티 : 기본 엔터티로부터 파생되어 많은 데이터를 갖게 되며, 행위 엔터티를 생성함 ex. 주문
ㄴ 업무에 있어서 중심적인 역할을 하며 데이터의 양이 많이 발생함.
행위 엔터티 : 2개 이상의 부모 엔터티로부터 파생, 보통 설계 초기 단계보다는 상세 설계단계에서 많이 도출 ex. 주문 내역, 이벤트 응모 이력
ㄴ 데이터가 자주 변경되거나 증가할 수 있음.
13. 엔터티 이름 정의
- 업무에서 실제 쓰이는 용어 사용
- 한글 약어 사용x , 영문은 대문자 표기
- 단수 명사로 표현 (ex, 월매출내역들 X)
- 띄어쓰기 NO
- 다른 엔터티와 의미상으로 중복될 수 없음.
- 해당 엔터티가 갖고 있는 데이터가 무엇인지 명확하게 표현
14. 속성 : 엔터티의 특징을 나타내는 최소의 데이터 단위
사물이나 개념의 특징을 설명해줄 수 있는 항목, 프로세스에 사용되는 데이터로, 더 이상 쪼개지지 않는 레벨.
- 속성값 : 각각의 속성은 속성값을 가지며 속성값은 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터
- 하나의 속성은 한 개의 속성값만 가질 수 있다. 하나의 속성이 여러 개의 속성값을 갖는 경우 별도의 엔터티로 분리하는 것이 바람직함.
15. 엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티에 두개 이상의 인스턴스를 갖는다
- 한 개의 인스턴스는 두개 이상의 속성을 갖는다
- 한 개의 속성은 하나의 속성값을 갖는다
16. 속성의 분류
1) 특성에 따른 분류 : 기본 속성 / 설계 속성 / 파생 속성
- 기본 속성 : 업무 프로세스 분석을 통해 바로 정의가 가능한 속성
- 설계 속성 : 업무에 존재X , 설계하다보니 필요하다고 판단되어 도출해낸 속성, 모델링을 위해 인위적으로 만들어진 속성.
ㄴ '학생' 엔터티에 이름, 학과, 학년이라는 속성 존재한다고 가정, 속성들의 속성값은 중복될 수 있음. 이 때, '학번' 이라는 설계속성을 만들어서 개개인에게 고유번호를 할당함
- 파생 속성 : 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성
ㄴ 데이터 정합성 고려해야하며, 누락 데이터 생길 경우 엉터리 결과값 발생 위험 > 불가피하게 필요한 경우만 사용
2) 구성방식에 따른 분류 : PK, FK, 일반 속성
- PK(Primary Key) 속성 : 엔터티의 인스턴스들을 식별할 수 있는 속성. 유니크함 부여. (ex. 사번, 학번, 상품코드)
- FK(Foreign Key) 속성 : 다른 엔터티의 속성에서 가져온 속성 , 매개체 역할 (ex. 부서코드, 학과코드, 회원등급코드)
ㄴ 다른 엔터티의 PK값과 일치하거나 NULL값을 가질 수도 있는 속성
- 일반 속성 : PK,FK를 제외한 나머지 속성 (ex. 상품명, 가격, 이름, 생년월일)
17. 도메인 : 속성이 가질 수 있는 속성값의 범위
ex. 우편번호는 다섯자리의 숫자라는 범위를 가지고 있고, 이것은 엔터티를 정의할 때 데이터 타입과 크기로 나타낼 수 있다.
18. 용어사전엔터티의 속성명을 정의할 때 명확한 의미의 이름을 부여하고 다른 엔터티와의 혼란을 예방하기 위해 이용하는 것용어사전을 두고 각 엔터티에 공통된 룰로 적용하는 것이 바람직.
19. 관계 : 관계명 / 관계차수 / 관계선택사양 엔터티와 엔터티와의 관계를 의미.
존재관계 / 행위관계
* ERD에서는 존재에 의한 관계와 행위에 의한 관계 구분X
1) 존재관계 : 엄마와 아기처럼 존재 자체로 연관성이 있는 관계. ex. 직원과 부서, 학생과 학과2) 행위관계 : 특정한 행위를 함으로써 연관성이 생기는 관계 ex. 회원과 주문, 학생과 출석부
- 관계명 : 반드시 명확한 문장으로 표현, 현재형- 관계차수 : 각 엔터티에서 관계에 참여하는 수 의미 1:1. 1:N, M:N 형식- 관계선택사양 : 필수적 관계(참여자 반드시 존재) / 선택적 관계(참여자 없을 수도 있음)
*두 엔터티 사이를 이어주는 동사가 존재해야한다.
*두 엔터티 간의 관계에는 부모-자신의 관계 외에 다른 관계도 존재할 수 있다.
*두 엔터티 사이에 조합되는 정보가 존재해야 한다.
*두 엔터티 사이에 영향력 있는 관계가 존재해야 한다.
20. 식별자 모든 엔터티는 인스턴스를 가진다. 인스턴스는 속성으로 자신의 특성을 나타낸다. 식별자는 이런 속성 중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성을 의미한다.
21. 주식별자 : 기본키, PK에 해당하는 속성. 하나의 속성이 주식별자가 될 수 있고, 여러 개의 속성이 주식별자가 될 수 있다
유일성 / 최소성 / 불변성 / 존재성(속성값 NULL X)
1) 대표성 여부 : 주식별자(참조관계 O) / 보조식별자(참조관계 X)
2) 스스로 생성되었는지 여부 : 내부식별자/ 외부식별자(다른 엔터티와의 연결고리 역할)
3) 단일 속성의 여부 : 단일식별자 / 복합식별자(2개이상의 속성으로 구성)
4) 대체 여부 : 본질식별자 / 인조식별자(인스턴스 식별가능하나 본질 식별자 아님, 다른 엔터티와 참조관계 연결X)
22. 식별자 관계 VS 비식별자 관계 - 식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계. 주식별자는 반드시 존재(존재성), 부모 엔터티가 있어야 생성 가능. 단일식별자인지 복합식별자인지에 따라 1:1이거나 1:M
- 비식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계. 일반 속성의 속성값은 NULL이 도리 수 있으므로 부모 엔터티가 없는 자식 엔터티 생성이 가능. 자신 엔터티가 존재하는 상태에서 부모 엔터티 삭제될 수 있음.
식별자 관계 | 비식별자 관계 |
강한 관계 | 약한 관계 |
부모 엔터티의 식별자가 자식 엔터티의 주식별자 | 부모 엔터티의 식별자가 자식 엔터티의 일반 속성 |
부모 엔터티가 있어야 생성 가능 | 부모 엔터티가 없는 자식 엔터티 생성 가능 |
실선으로 표현 | 점섬으로 표현 |
23. 데이터 모델에서 인스턴스에 해당하는 로우(ROW)와 속성에 해당하는 컬럼(COLUMN)으로 이루어진다.
댓글