- 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 과정
- 데이터베이스 설계의 핵심 과정
- 현실세계를 추상화하여 중요 데이터를 개념 세계로 추출해 가는 과정
- 결과물로 개념적 데이터 모델(객체 - 관계(E-R) 모델)
- 개념 세계의 데이터를 데이터베이스가 저장할 구조로 변환하는 과정
- 결과물로 관계 데이터 모델
- 논리 데이터 모델이 실제 데이터베이스 저장소에 저장되는 저장 구조(테이블, 컬럼)로 변경
- 개체에 대한 데이터를 저장하는 논리적 구조 - 릴레이션(2차원의 테이블 구조)
- 튜플의 유일성 : 동일한 튜플이 존재할 수 없다
- 튜플의 무순서 : 튜플 사이의 순서는 무의미
- 속성(애트리뷰트)의 무순서 : 속성 사이의 순서는 무의미
- 속성의 원자성(Atomic) : 애트리뷰트 값으로 하나(나누어지지 않는) 값만 가짐
이렇게 데이터 모델링을 하는 이유와 장단점을 알아보자. 장점은 첫째로 데이터 모델에 정의된 정보를 이용해 테이블, 기본키, 외래키 그리고 관계를 정의하는데 사용할 수 있다. 또한 데이터에 대해 조직 내의 커뮤니케이션에 도움을 주고, 다른 조직 간에도 커뮤니케이션에 도움을 준다. 예를 들어 기획팀은 개념적 모델을 가지고 개발팀과 이야기를 할 수 있고, 개발팀은 논리적, 물리적 모델링을 진행할 수 있다. 마지막으로 모델에 사용할 알맞은 데이터를 알 수 있게 해준다. 구체적으로 명시를 함으로써 어떤 데이터가 필요한지 구체화되기 때문이다. 단점으로는 데이터 모델을 개발하려면 물리 데이터의 저장 특성을 알아야만 한다. 즉 관련 지식이 필연적으로 요구된다. 가장 큰 단점은 구조의 사소한 변경이 전체 어플리케이션의 변경을 요구한다는 것이다. 어플리케이션이 개발된 상태에서 데이터 구조가 바뀌게 되면 객체 매핑부터 로직 구현된 부분까지 전부 수정을 해야만 한다.
Key란? 검색이나 정렬 시 Tuple을 구분할 수 있는 기준이 되는 Attribute
- 릴레이션을 구성하는 속성들 중에서 Tuple을 유일하게 식별할 수 있는 속성들의 부분 집합을 의미한다(기본키로 사용할 수 있는 속성들을 후보키라 한다)
- 모든 릴레이션은 반드시 하나 이상의 후보 키를 가져야 한다
- 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다
- 유일성 : Key로 하나의 Tuple을 유일하게 식별할 수 있음
- 최소성 : 꼭 필요한 속성으로만 구성
EX) [학생] 릴레이션에서 학번이나 주민번호는 다른 레코드를 유일하게 구별할 수 있는 기본키로 사용할 수 있으므로 후보키가 될 수 있다. 즉, 기본키가 될 수 있는 키들을 후보키라 한다
- 후보 키 중 선택한 Main key
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- Null 값을 가질 수 없다(개체 무결성의 첫 번째 조건)
- 기본 키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다(개체 무결성의 두번째 조건)
아래 조건을 만족해야 한다
- 유일성 : 기본키를 구성하는 컬럼은 테이블에서 레코드를 식별할 수 있도록 유일해야 한다
- 최소성 : 유일성을 만족하는 한도 내에서 최소한의 컬럼(하나 이상)으로 구성되어야 한다
- 개체 무결성 : 기본키가 가지고 있는 값의 유일성을 보장받아야 한다
EX) [학생] 릴레이션에는 학번이나 주민 번호가 기본키가 될 수 있고, [수강] 릴레이션에는 학번 + 과목명으로 조합해야 기본키가 만들어질 수 있다. 왜냐하면 [수강] 릴레이션에서는 학번 속성과 과목명 속성은 개별적으로 기본키로 사용할 수 없다. 다른 튜플들과 구별되지 않기 때문이다
- 후보키가 둘 이상일 때, 기본 키를 제외한 나머지 후보키들을 말한다
- 보조키라고도 한다
EX) [학생] 릴레이션에서 학번을 기본키로 정하면 주민번호는 대체키가 된다
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타내지 않는다
- 릴레이션을 구성하는 모든 튜플에 대해서 유일성은 만족하지만, 최소성은 만족시키지 못한다
EX) [학생] 릴레이션에서는 학번, 주민번호, 학번+주민번호, 학번+주민번호+성명 등으로 슈퍼키를 구성할 수 있다. 또한 여기서 최소성을 만족시키지 못한다는 말은 학번+주민번호+성명이 슈퍼키인 경우, 3개의 속성 조합을 통해 다른 튜플과 구별이 가능하지만, 성명 단독적으로 슈퍼키를 사용했을 때에는 구별이 가능하지 않기 때문에 최소성을 만족시키지 못한다
즉, 뭉쳤을 경우 유일성이 생기고 흩어지면 몇몇 속성들은 독단적으로 유일성이 있는 키로 사용할 수 없다. 이것을 최소성을 만족하지 못한다고 한다.
- 관계(Relation)을 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 외래키라고 한다
- 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는 데 중요한 도구로 사용된다
- 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다(참조 무결성의 조건)
EX) [수강] 릴레이션이 [학생] 릴레이션을 참조하고 있으므로, [학생] 릴레이션의 학번은 기본키이고, [수강] 릴레이션의 학번은 외래키이다.
즉, 각 릴레이션의 입장에서 속성은 기본키가 되기도 하고, 외래키가 되기도 한다
-> [수강] 릴레이션의 학번에는 [학생] 릴레이션의 학번에 없는 값은 입력할 수 없다
데이터베이스에서 아직 알려지지 않았거나, 모르는 값으로서 "해당 없음" 등의 이유로 정보 부재를 나타내기 위해 사용하는, 이론적으로 아무것도 없는 특수한 데이터를 뜻한다
-
도메인 무결성 제약조건
- 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만 가져야 한다
-
개체 무결성 제약조건
- 기본키를 구성하는 모든 속성은 null을 가질 수 없다
-
참조 무결성 제약조건
- Foreign key는 참조하는 릴레이션의 primary key 속성 값 중 하나여야 한다(null 가능)





