- 3단계에서는 DBMS에 적합한 논리적 구조를 설계해 논리적 스키마로 테이블 형태의 구조를 만든다.
- 관계 데이터 모델은 개념적 구조를 논리적 구조로 표현한다
- 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장한다
- 열은 속성=애트리뷰트 라 하며 행은 투플이라 부른다.
- 각각의 열의 값이 가지는 특성(char,int)를 도메인이라 한다.
- 릴레이션은 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것이다
- 속성은 파일 시스템 관점에서 필드
- 튜플은 파일 시스템 관점에서 레코드에 해당한다
- 도메인은 하나의 속성이 가질 수 있는 모든 값의 집합이며, 속성 값을 입력 및 수정할 때 적합성 판단의 기준이 된다. 예를 들어 숫자를 넣어야 하는데 문자를 넣는것과 같다.
- 널은 속성값을 아직 모르거나 해당되는 값이 없음을 표현한다.
- 하나의 릴레이션에서 속성의 전체 개수는 차수, 투플의 전체 개수는 카디널리티라 부른다.
- 위 테이블에서 고객 릴레이션의 차수는 6, 카디널리티는 4다
- 릴레이션 스키마는 릴레이션의 논리적 구조다. 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의한다.예를들어 고객(아이디,이름...) 으로 표현하는 것이다. 변하지 않는 정적인 특징이 있다. 릴레이션 내포라고도 한다.
- 릴레이션 인스턴스는 어느 한 시점에 릴레이션의 존재하는 투플들의 집합이다. 변할 수 있는 동적인 특징이 있다. 릴레이션 외연이라고도 한다.
- 위 사진에서 릴레이션 스키마와 인스턴스를 확인할 수 있다.
- 데이터베이스 스키마는 릴레이션 스키마의 모음이다
- 데이터베이스 인스턴스는 릴레이션 인스턴스의 모음이다.
- 릴레이션의 특성은 네가지다.
- 투플의 유일성은 하나의 릴레이션에 동일한 투플이 있을 수 없는 것이다.
- 투플의 무순서는 하나의 릴레이션에서 투플 사이의 순서는 무의미한 것이다.
- 속성의 무순서는 하나의 릴레이션에서 속성 사이읭 순서는 무의미한 것이다.
- 속성의 원자성은 속성 값으로 원자 값만 사용할 수 있는 것이다.
- 위 사진에서 직업에 다중 값을 포함하므로 속성의 원자성을 위배해 릴레이션이 될 수 없다
- 키는 릴레이션에서 투플들을 구분하는 속성 또는 속성들의 집합이다.
- 키의 특징은 유일성으로 하나의 릴레이션에서 모든 투플은 서로 다른 키 값을 가져야 한다는 것이다.
- 또 최소성으로 꼭 필요한 최소한의 속성들로만 키를 구성하는 것이다.
- 키의 종류중 하나인 슈퍼키는 유일성만 만족하면 가능하다. 모든 개체값이 유일한 값만 가지면 된다.
- 후보키는 유일성에 최소성까지도 만족하는 속성의 집합이다.
- 기본키는 후보키 중에서 기본적으로 사용하기 위해 선택한 키다.
- 널값을 가질수 있는 속성이 포함된 후보키나 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합하다.
- 단순한 후보키를 선택하는것을 권장한다.
- 대체키는 후보키중에서 기본키로 선택하지 못한 것이다.
- 키의 종류를 다이어그램으로 표현하면 다음과 같다.
- 외래키는 다른 릴레이션의 기본키를 참조하는 속성이다.
- 릴레이션들 간의 관계를 표현한다.
- 참조하는 릴레이션은 외래키를 가진 릴레이션이고, 참조되는 릴레이션은 외래키가 참조하는 기본키를 가진 릴레이션이다.
- 위 표에서 주문 릴레이션의 주문고객은 고객 릴레이션의 고객아이디라는 기본키를 참조하는 외래키다.
- 외래키가 주문 릴레이션의 투플과 연관성 있는 고객 릴레이션의 투플을 연결한다.
- 외래키 속성과 참조하는 기본키의 이름은 달라도 되지만 도메인은 같아야 한다
- 외래키를 기본키로 참조하지 않고 고객이름같은 후보키로 하면 중복이 발생할 수 있다.
- 외래키는 하나의 릴레이션에 여러개 존재할 수도 있고, 외래키를 기본키로 사용할 수도 있다.
- 같은 릴레이션 내의 기본키를 참조하는 외래키도 정의할 수 있다.
- 외래키는 널 값을 가질 수도 있다.
- 위 테이블에서는 고객아이디를 참조하는 추천고객이라는 외래키가 등장한다.
- 최종적으로 키의 특성을 정리하면 다음과 같다.
- 무결성 제약조건은 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙이다.
- 기본키를 구성하는 모든 속성은 널 값을 가질 수 없는 조건은 개체 무결성 제약 조건이다.
- 외래키는 참조할 수 없는 가질 수 없다는 조건은 참조 무결성 제약조건이다.
- 위의 표에서 기본키인 고객아이디에 널 값이 있으므로 개체 무결성 제약조건을 위배했다.
- 위의 표에서 외래키인 주문고객의 cherry 라는 주문고객이 기본키인 고객아이디에 없어 참조할 수 없으므로 참조 무결성 제약조건을 위배했다.
- 주의할 점은 기본키는 널 값을 가질 수 없지만 외래키는 널 값을 가질 수 있는 것이다.