티스토리 뷰
https://www.youtube.com/watch?v=QB_GYdHUHmA
데이터 모델링의 이해 파트는 동일
데이터 모델과 성능에서는 정규화에 포인트를 맞추는 식으로 예상된다.
엔터디(Entity), 속성(Attribute), 인스턴스(instance) - 테이블,컬럼,행들의 집
DBMS(데이터베이스 매니지먼트 시스템)
모델링의 개념
현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현
데이터베이스의 구조와 관계를 정의하며, 이를 통해 데이터의 저장, 조작 관리 방법을 익힌다.
모델링의 특징 - 단명추
단순화 - 불필요한 세부 사항을 제거(표현하기 쉽게)
명확화 -정확하게 현상을 기술(의사소통 원활화)
추상화 - 간략하게 대략적으로 표현(일정하게 표기법을 따라)
데이터 모델링 유의점
중복,비유연성(무조건 유연하게 추가될 수 있게), 비일관성(모순되거나 상반되면 안됨)
중유일
데이터 모델링의 3 가지 요소 -대속관
대상 : 객체
속성 : 대상이 갖는 속성
관계 : 대상들 간의 관계
데이터 모델링의 3단계
개념적에서 논리, 그리고 물리적 모델링으로.
개념적은 추상화하고,논리는 구체화설계로 논리적인 설계(데이터 정규화 수행)
논리가 끝나면 말 그대로 물리적으로 만든다(추상화 수준은 제일 낮다)
데이터 모델의 표기법(ERD) - 엔터디 간의 관계를 시각적으로 표현한 다이어그램
ERD 작성 절차
1.엔터티를 도출한 후 그린다.
2, 엔터티 배치
3. 엔터티 간의 관계를 설정
4. 관계명을 서술
5. 관계의 참여도 기술
6. 관계의 필수 여부를 확인
엔터티의 개념 - 현실 세계에서 독립적으로 식별 가능한 객체나 사물.
분석해야 하는 대상들로 이루어진 집합(교수, 학생)
엔터디 : 학생
속성 : 학번, 이름, 학과
식별자 : 학번
인스턴스 : 학번,이름,학과의 각 데이터
엔터티의 특징
1.유일한 식별자에 의해 식별 가능
2. 해당 업무에 필요하고 관리하고자 하는 정보여야
3. 여러개의 인스턴스의 집합이어야 할 필요가 있다.
4. 엔터티는 반드시 2개 이상의 속성을 가진다.
5. 엔터티는 프로세스에 의해 이용
6. 다른 엔터티와 최소 1개 이상의 관계 성립
한마디로 업무적으로 필요해야 하며, 최소 1개 이상의 관계와 2개이상의 속성을 가진다.
엔터티의 분류
유형과 무형에 따른 분류
1. 유형엔터티 - 사원,물품,감사
2.개념엔터티 - 물리적인 형태 x - 조직,보험상품 등
3. 사건엔터티 - 업무를 수행함에 따라 발생한다 - 주문
발생 시점에 따른 분류
1. 기본 엔터티
자신의 고유한 주식별자를 가진다.
2.중심엔터티
기본 엔터티로부터 발생되고 그 업무에서 중심적인 역할
3. 행위 언터티
2개 이상의 부모 엔터티로부터 발생
엔터티의 명명
1. 현업에서 사용하는 용어 사용
2. 가능하면 약자 사용은 자제
3. 단수 명사 사용
4. 모든 엔터티에서 유일하게 이름 부여
5. 엔터티 생성 의미대로 이름 부여
엔터티와 인스턴스 표기법
엔터티는 사각형으로 표현, 속성은 조금씩 다르다.
IE 표기법 -
Barker 표기법 - 내부에 #
속성의 개념
컬럼은 어떨 떄 표현하는지를 생각하면 편하다.
즉, 관찰 대상의 특징이나 성질을 표현한 것이다.
엔터티,인스턴스, 속성, 속성값의 관계
한 개의 엔터티는 2개 이상의 인스턴스, 2개 이상의 속성
한 개의 속성은 1개의 속성값을 갖는다.
속성의 특징 - 정해진 주식별자에 함수적 종속성을 가져야 한다.
각 속성이 하나의 값을 가지고 있음을 의미
원자성 - 인스턴스가 해당 속성에 대해 단일하고 명확한 값을 가지는 것
함수적 종속성
어떤 속성 A의 값에 의해 다른 속성 B도 유일하게 결정된다면, 함수적으로 종속
1)완전 함수적 종속
PK(primary key)를 구성하는 컬럼이 2개 이상일 경우, PK 값 모두에 의한 종속관계를 나타낼 때 완전 함수 종속성 만족
한마디로 기본키가 2개이상으로만 컬럼이 결정될 수 있다면 pk에 대해서 완전종속이다.
2)부분 함수적 종속
기본 키 전체가 아니라 기본키 일부에 대해서만 종속될 떄
과목이라는 기본키에만 강사가 종속되므로 학생번호는 상관이 없다.
속성의 분류
속성의 특성에 따른 분류
1.기본 속성 - 업무로부터 추출된 모든 속성
2.설계 속성 - 업무를 규칙화하기 위해 새로 만들어지는 속성
3. 파생 속성 - 다른 속성에 의해 만들어지는 속성
2)엔터티 구성 방식에 따른 분류
1.PK(기본키)
-인스턴스를 식별할 수 있는 속성
2. FK(외래키) 속성
- 다른 엔터티와의 관계에서 포함된 속성
부속 엔터티에 부속 키가 있을 때
3. 일반 속성
-엔터티에 포함되어 있고, PK/FK에 포함되지 않는 속성
3) 분해 여부에 따른 속성
1. 단일 속성
하나의 의미로 구성된 경우(회원ID, 이름 등)
2. 복합 속성
여러 개의 의미로 구성된 경우(ex 주소(시,구,동으로 분해 가능) 등
3. 다중값 속성
속성에 여러 개의 값을 가질 수 있는 경우
다중값 속성은 엔터티로 분해(상품 리스트)
속성의 명명규칙
1. 해당 업무에서 사용하는 이름을 부여
2. 서술식 속성명은 사용하지 않음
3. 약어의 사용은 가급적 제한
4. 전체 데이터 모델에서 유일한 명칭
도메인
-도메인은 각 속성이 가질 수 있는 값의 범위
-엔터티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정
관계의 개념
-관계는 엔터티간의 연관성을 나타낸 개념
1)존재적 관계 - 하나의 엔터티의 존재가 다른 엔터티에 영향을 미치는 관계
2)행위적 관계 - 엔터티 간의 어떤 행위가 있는 것을 의미
관계의 구성
1. 관계명
2. 차수
3. 선택성
관계의 차수
-한 엔터티의 레코드(인스턴스)가 다른 엔터티의 레코드(인스터스)와 어떻게 연걸되는지를 나타내는 표현
주소 1:1,1:N,N:M 등으로 표현
1) 1대 1 관계
완전 1대 1관계 - 사원은 반드시 부서가 있어야 한다.
선택적 1대 1관계 - 사원은 하나의 부서가 있거나 없을 수 있다.
2) 1대 N 관계
-엔터티에 하나의 행에 다른 엔터티의 값이 여러 개 있는 관계
ex) 고객은 여러 개 계좌를 소유할 수 있다.
3) M대 N 관계
조인 시 카테시안 곱이 발생하면 좋지 않다.
두 엔터티를 연결하는 연결 엔터티의 추가로 1대 N관계로 해소할 필요가 있다.
관계의 페어링
엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것
관계와 차수, 페어링 차이
차수는 하나의 엔터티와 다른 엔터티 간의 레코드 연결 방식 - 한 학생
페어링은 두 엔터티 간의 특정 연결을 설명(인스턴스의 관계)
식별자
식별자 개념
- 하나의 엔터티에 구성된 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성
- 유일한 식별자가 존재해야 한다.
- 식별자는 논리 모델링에서만 사용하고, 물리 모델링에서는 키(key)라고 표현한다.
주식별자 특징
1. 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분한다.
2. 최소성 : 유일성을 만족하는 최소한의 속성으로 구성된다.
3. 불변성 : 주식별자가 한번 지정되면 그 식별자는 변하지 않아야 한다.
4. 존재성 : 주식별자가 지정되면 반드시 값이 존재해야 한다.( NULL X)
식별자 분류
대표성 여부에 따른 식별자
주식별자 / 보조 식별자
예 ) 주민번호
보안 문제 때문에 잘 안씀
식별자인데 자주 사용되기는 어려움 -> 보조식별자
생성 여부에 따른 식별자의 종류
내부 식별자 / 외부 식별자
다른 엔터티 참조 없이 - 내부 식별자
다른 엔터티와 관계로 - 외부 식별자
우편번호는 식별자지만, 주소와 관계되어서 만들어졌다.
속성 수에 따른 식별자
단일 식별자 / 복합식별자 - 2개 이상의 속성
대체 여부에 따른
본질식별자 / 인조식별자
식별자 표기법
IE 표기법 - 주식별자가 윗칸에 기술
Barker 표기법 - 주식별자를 #으로 표시
주식별자 도출기준
1) 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
2) 명칭이나 내역등과 같은 이름은 피한다.
- 이름 자체를 주식별자로 사용하는 행위는 피한다.
3) 속성의 수를 최대한 적게 구성한다.
- 조인으로 인한 성능저하
일반적으로 7~8개의 주식별자 구성은 새로운 인조 식별자를 생성하여 모델 단순화한다.
관계간 엔터티 구분
1)강한 개체
-독립적으로 존재할 수 있는 엔터티
ex) 고객, 계좌 -> 고객은 독립적
2)약한 개체
계좌는 독립적으로 존재 X
식별 관계와 비식별관계
1) 식별 관계
- 하나의 엔터티의 기본키를 다른 엔터티가 기본키의 하나로 공유하는 관계이다.
- ERD에서는 실선
id, id
2) 비식별 관계
- 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 속성으로 관계
- ERD에서는 점선
student 에서는 id , project에서는 student_id