[Database] 데이터베이스 설계 및 구조
데이터베이스 설계
데이터베이스 설계 순서
개념적 설계(정보 모델링, 개념화)
- 정보의 구조를 얻기 위해 현실 게계의 무한성과 계속성을 이해하고, 다른 사람과 통신하기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현
- 스키마 모델링과 트랜잭션 모델링 병행
- 요구 분석 단계에서 나온 결과(요구 조건 명세)를 DBMS에 독립적인 E-R 다이어그램(r개체 관계도)으로 작성
- DBMS에 독립적인 개념 스키마를 설계.
논리적 설계(데이터 모델링)
- 현실 세계의 자료를 컴퓨터가 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 변환하기 위해 특정 DBMS가 지원하는 논리적 자료 구조로 변환.
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화
- 개념적 설계 = 개념 스키마 설계
논리적 설계 = 개념 스키마 평가, 정제 그리고 특정 DBMS에 종속적인 논리적 스키마 설계
- 트랜잭션의 인터페이스를 설계
- 관계형 데이터베이스라면 테이블을 설계하는 단계
물리적 설계(데이터 구조화)
- 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터베이스로 변환
- 데이터베이스 파일의 저장 구조, 레코드의 형식, 접근 경로
- 트랜잭션 작성
- 물리적 설계 옵션 선택 시 고려사항
: 반응 시간(Response Time), 공간 활용도(Space Utilization), 트랜잭션 처리량(Transaction Throughput)
관계형 데이터베이스 구조
Tuple(튜플)
- 릴레이션을 구성하는 각각의 행(row)
- 속성(Attribute)의 모임으로 구성
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수 = 카디널리티(Cadinality) = 기수 = 대응수
Attribute(속성)
- 릴레이션을 구성하는 각각의 열(column)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조 상의 데이터 항목 또는 데이터 필드에 해당
- 개체의 특성을 기술
- 속성의 수 = 디그리(Degree) = 차수
Domain(도메인)
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는 데 사용
Relation Instance(릴레이션 인스턴스)
- 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 적용되어 구체적인 데이터를 값을 갖고 있는 것을 말함.
키(Key)
- 키(Key)는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 애트리뷰트(속성)이다.
Candidate Key(후보키)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 즉, 기본키로 사용할 수 있는 속성들을 말함
- 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야함
- e.g. <학생>릴레이션(테이블)에서
학번
이나 주민번호
는 다른 레코드에서 유일하게 구별할 수 있는 기본키로 사용할 수 있음으로 후보키
Primary Key(기본키)
- 후보키 중에서 선택한 주키(Main Key)
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- Null 값을 가질 수 없음
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음
- e.g. <학생>릴레이션(테이블)에서
학번
이나 주민번호
가 기본키가 될 수 있음,
<수강>릴레이션(테이블)에서 학번
+과목명
을 조합하여 기본키가 될 수 있음
Alternate Key(대체키)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말함
- 보조키라고도 함
- e.g. <학생>릴레이션(테이블)에서
학번
을 기본키로 정의하면, 주민번호
는 대체키가 됨
Super Key(슈퍼키)
- 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성과 집합은 동일한 값을 나타내지 않는다
- 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못함
- e.g. <학생>릴레이션(테이블)에서
학번
, 주민번호
, 학번
+주민번호
, 주민번호
+성명
, 학번
+주민번호
+성명
등으로 슈퍼키를 구성할 수 있다.
Foreign Key(외래키)
- 관계(Relation)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성
- 외래키로 지정되면 참조 테이블의 기본키에는 없는 값을 입력할 수 없음
- e.g. <수강>릴레이션(테이블)이 <학생>릴레이션(테이블)을 참조하고 있으므로 <학생>릴레이션의
학번
은 기본키이고, <수강>릴레이션의 학번
은 외래키이다
- <수강>릴레이션의
학번
에는 <학생>릴레이션의 학번
에 없는 값을 입력할 수 없다