1. 데이터 모델링과 데이터 모델의 개념 이해
1-1. 데이터 모델링 정의
현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정
데이터베이스 설계의 핵심 과정
1-2. 2단계 데이터 모델링
1-2-1. 개념적 데이터 모델링
현실 세계의 중요 데이터를 추출하여 개념 세계로 옮기는 작업
1-2-2. 논리적 데이터 모델링
개념 세계의 데이터를 데이터베이스의 구조로 표현하는 작업
1-3. 데이터 모델 정의
데이터 모델링의 결과물을 표현하는 도구
- 개념적 데이터 모델
- 사람이 이해할 수 있도록 현실 세계를 모델링하여 개념적 구조로 표현하는 도구
- 개체-관계(Entity-Relationship) 모델
- 논리적 데이터 모델
- 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구
- 관계 데이터 모델(relational data model)
1-4. 데이터 모델 구조
데이터 구조
- 저장할 데이터 타입과 관계
- 정적 특징
연산
- 표현된 값들을 처리하는 작업
- 동적 특징
제약조건
- 구조적 특면의 제약 사항
- 데이터 무결성 유지 목적
2. 관계 데이터 모델 개념과 용어
2-1. 기본 용어
2-1-1. 릴레이션
- 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것
- 파일 관리 시스템 관점에서 파일(file)에 대응
2-1-2. 투플(tuple)
- 릴레이션의 행
- 파일 시스템 관점에서는 레코드(record)에 대응
2-1-3. 애트리뷰트(attribute)
- 릴레이션의 행
- 파일 시스템 관점에서는 필드(field)에 대응
2-1-4. 도메인(domain)
개념 : 한 애트리뷰트가 가질 수 있는 모든 값들의 집합
각 애트리뷰트의 도메인의 값들은 원자값
도메인을 명시하는 이유
1) 릴레이션들의 합집합, 교집합, 차집합 등을 제한하기 위해서
서로 다른 릴레이션 EMPNO와 DNO는 서로 다른 도메인을 가지므로 이 애트리뷰트들에 대해 합집합, 교집합, 차집합 등을 수행하는 것은 무의미합니다.
2) 의미 있는 연산들만 허용하기 위해서
서로 다른 릴레이션 EMPNO와 DNO는 서로 다른 도메인을 가지므로 EMPNO = DNO는 의미가 없습니다.
2-1-5. 차수(degree)와 카디날리티(cardinality)
차수 : 한 릴레이션에 들어있는 애트리뷰트들의 수(열의 수)
- 유효한 릴레이션의 최소 차수는 1
- 릴레이션의 차수는 자주 바뀌지 않음
카디날리티 : 릴레이션의 튜플 수(행의 수)
- 유효한 릴레이션은 카디날리티 0을 가질 수 있음
- 릴레이션의 카디날리티는 시간이 지남에 따라 계속해서 변함
관계 데이터 모델의 용어들
릴레이션 용어 | 일반적인 용어 | 파일 시스템 용어 |
릴레이션 | 테이블 | 파일 |
스키마 | 내포 | 헤더 |
인스턴스 | 외연 | 데이터 |
튜플 | 행 | 레코드 |
속성 | 열 | 필드 |
2-1-6. 널값(null value)
알려지지 않음(unknown) 또는 적용되지 않음(not applicable)을 나타냅니다.
- 사원 릴레이션의 새로운 사원에 관한 튜플을 입력시에 신입사원의 DNO(부서번호)가 결정되지 않으면 부서번호 애트리뷰트는 null값이 된다.
널값은 숫자 도메인의 0이나 문자열 도메인의 공백 문자 또는 공백 문자열과 다름
2-1-7. 릴레이션 스키마(relation schema)
릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합
내포(intension)라고 함
2-1-8. 릴레이션 인스턴스(relation instance)
릴레이션에 어느 시점에 들어 있는 튜플들의 집합
외연(extension)이라고 함
3. 릴레이션의 특징
3-1. 속성의 원자성
한 튜플의 각 애트리뷰트는 원자값을 가지며 정의한 도메인 값만 가질 수 있습니다.
그래서 애트리뷰트에 정수가 들어가면 다음 애트리뷰트도 정수값만 들어갈 수 있습니다.
3-2. 속성의 무순서
애트리뷰트들의 순서는 무의미합니다.
부서이름 애트리뷰트와 부서의 층 애트리뷰트의 순서는 바뀌어도 상관없습니다.
3-3. 튜플의 유일성
- 동일한 튜플이 두 개 이상 존재하지 않음
- 각 튜플을 고유하게 식별할 수 있는 적어도 한 개 이상의 애트리뷰트의 집합이 존재
3-4. 튜플의 무순서
- 튜플의 순서는 무의미함
4. 릴레이션의 키와 무결성 제약조건의 이해
4-1. 릴레이션의 키
각 튜플을 유일하게 식별할 수 있는 하나 이상의 애트리뷰트들의 집합
4-2. 키의 특성
유일성 : 하나의 키 값으로 각 튜플을 유일하게 식별할 수 있는 특성
최소성 : 각 튜플을 유일하게 식별하는 키는 꼭 필요한 애트리뷰트로만 구성되어야 함
예) 학생 릴레이션에서 "학번 + 이름 + 주소"가 있으면 이름과 주소는 같이 있어도 구분은 가지만 최소성을 위해 없는것이 좋습니다.
4-3. 수퍼 키
한 릴레이션 내의 특정 튜플을 고유하게 식별하는 하나의 애트리뷰트 또는 애트리뷰트들의 집합
예) 신용카드 회사의 고객 릴레이션에서 (신용카드번호, 주소) 또는 (주민등록번호, 이름)
튜플들을 고유하게 식별하는데 꼭 필요하지 않은 애트리뷰트들을 포함할 수 있습니다.
슈퍼키는 유일성만 만족하고 최소성은 만족하지 않습니다.
4-4. 후보 키
각 튜플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임(유일성과 최소성 만족)
예) (신용카드번호, 주소)는 신용카드 회사의 고객 릴레이션의 후보 키가 아니지만 (신용카드번호)는 후보 키
모든 릴레이션에는 최소한 한 개 이상의 후보 키가 있습니다.
4-5. 복합 키(composite key)
두 개 이상의 애트리뷰트로 이루지는 후보 키
예) 수강 릴레이션의 (학번, 과목번호, 학점)에서 학번, 과목번호를 합쳐야 최소성을 보장할 수 있습니다. -> 복합키
4-6. 기본 키(primary key)
한 릴레이션에서 후보 키가 두 개 이상 있으면 데이터베이스 관리자가 이들 중에서 하나를 기본 키로 선정함(유일성과 최소성 만족)
예) 신용카드 회사의 고객 릴레이션에서 신용카드번호와 주민등록번호가 후보 키가 될 수 있음. 이 중에서 신용카드 번호를 기본 키로 선정
4-7. 대리 키(surrogate key)
자연스러운 기본 키를 찾을 수 없는 경우 레코드 번호와 같이 종종 인위적인 키 애트리뷰트를 릴레이션에 추가한 것
4-8. 기본 키 선정 시 고려할 사항들
- 애트리뷰트가 항상 고유한 값을 가지는가?
- 애트리뷰트가 확실하게 널 값을 갖지 않는가?
- 애트리뷰트의 값이 변경될 가능성이 높지 않은가?
- 가능하면 작은 정수 값이나 짧은 문자열을 갖는가?
- 가능하면 복합 기본 키를 피하는가?
4-9. 대체 키(alternate key)
기본 키가 아닌 후보 키
4-10. 외래 키
- 어떤 릴레이션의 기본 키를 참조하는 애트리뷰트
- 관계 데이터베이스에서 릴레이션들 간의 관계를 나타내기 위해서 사용
- 외래 키 애트리뷰트는 참조되는 릴레이션의 기본 키와 동일한 도메인을 가져야 함
4-11. 데이터 무결성(data integrity)
데이터의 정확성 또는 유효성을 의미
무결성 : 인가된 사용자만 접근 또는 변경을 허용
무결성 제약조건 종류
1) 도메인 제약조건(domain constraint)
- 각 애트리뷰트 값이 반드시 원자값이어야 함
- 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값 만을 가져야 한다는 조건
2) 언터티 무결성 제약조건(entity integrity constraint)
- 릴레이션의 기본 키를 구성하는 어떤 애트리뷰트도 널값을 가질 수 없음
3) 참조 무결성 제약조건(referential integrity constraint)
- 릴레이션 간의 참조 관계를 선언하는 제약조건
- 릴레이션 간의 관계들을 다른 릴레이션의 기본 키를 참조하는 것으로 표현(외래키)
- 학생 릴레이션과 수강 릴레이션, 과목 릴레이션과 수강 릴레이션은 기본 키와 외래 키 관계
- 수강 릴레이션의 외래키는 과목 릴레이션의 기본키와 도메인이 동일해야 하며, 수강 릴레이션의 값이 변경될 때 과목 릴레이션의 제약을 받는다는 것
4-12. 참조 무결성 제약조건
- 릴레이션 R2의 외래 키가 릴레이션 R!의 기본 키를 참조할 때 참조 무결성 제약조건은 아래의 두 조건 중 하나가 성립되면 만족됩니다.
1. 외래 키의 값은 R1의 어떤 투플의 기본 키 값과 같은
2. 외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않으면 널 값을 가짐
R1은 참조된 릴레이션, R2는 참조하는 릴레이션이 됩니다.
4-12-1. 삽입
참조되는 렐리이션(부모)에 새 튜플이 삽입되면 참조 무결성 제약조건은 위배되지 않습니다.
하지만 참조하는 릴레이션에 새로 삽입되는 튜플의 기본 키 애트리뷰트의 값에 따라서는 도메인 제약조건, 엔티티 무결성 제약조건을 위배할 수 있습니다.
4-12-2. 삭제
참조하는 릴레이션에서 튜플이 삭제되면 도메인 제약조건, 엔티티 무결성 제약조건, 참조 무결성 제약조건 등 모든 제약조건을 위배하지 않습니다.
하지만, 참조되는 릴레이션에서 튜플이 삭제되면 참조 무결성 제약조건을 위배하는 경우가 생길 수 있습니다.
4-12-3. 참조 무결성 제약조건을 만족시키기 위해서 DBMS가 제공하는 옵션
- 제한(restricted)
- 위반을 야기한 연산을 단순히 거절
- 연쇄(cascade)
- 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 릴레이션에서 이 튜플을 참조하는 튜플들도 함께 삭제
DEPARTMENT 릴레이션에서 (3, 개발, 9)를 삭제하면 EMPLOYEE 릴레이션에서 부서번호 3을 참조하는 두 번째 튜플과 다섯 번째 튜플도 함께 삭제가 됩니다.
- 널값(nullify)
- 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 릴레이션에서 이 튜플을 참조하는 튜플들의 외래 키에 널값을 삽입합니다.
- 예) DEPARTMENT 릴레이션에서 (3, 개발, 9)를 삭제하면 EMPLOYEE 릴레이션에서 부서번호 3을 참조하는 튜플들에는 널값을 삽입합니다.
- 디폴트값(default)
- 널값을 넣는 대신에 디폴트값을 넣는다는 것을 제외하고는 바로 위의 널값 옵셥과 비슷합니다.
'[WEB] > [DB]' 카테고리의 다른 글
[Mysql] error code: 1175. you are using safe update mode (0) | 2022.10.12 |
---|---|
[DB] 관계 대수 (0) | 2022.09.26 |