- 논리적 설계
- 현실 세계의 자료를 컴퓨터가 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 특정 DBMS가 지원하는 논리적 자료 구조로 변환한다.
- 개념 세계의 데이터를 필드로 기술한 데이터타입과 이 데이터타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화한다.
- 개념적 설계에서는 개념 스키마를 설계했다면, 논리적 설계 단계에서는 목표 DMBS에 맞는 스키마를 설계하게 돈된다.
- 관계형 데이터베이스라면 테이블, Relation을 설계하는 단계라고 볼 수 있다.
- Relation이란?
논리적 설계 단계에서는 앞서 설계했던 ER 모델을 관계형 데이터베이스에 직접 구현할 수 있도록 DB 구조를 정의해야 한다. 따라서 ER 다이어그램을 일련의 과정에 따라서 릴레이션으로 변경하게 된다.
- Relation
- 개체를 표현하기 위한 데이터 구조로써, 2차원 테이블로 표현된다.
- SQL의 테이블과 대응된다.
- Tuple
- 하나의 개체의 의미하며 Relation에선 행으로 표현된다.
- 각 튜플은 유일해야 한다.
- SQL의 row와 대응된다.
- Attribute
- 개체의 속성을 의미하며, Relation에서 열로 표현된다.
- SQL의 column과 대응된다.
- 관계형 모델의 Key 종류
- 알아야 할 용어
- 유일성 : 하나의 키 값으로 하나의 튜플을 유일하게 식별할 수 있어야 한다
- 최소성 : 키를 구성하는 속성 하나라도 제거되면 유일하게 식별할수 없도록 꼭 필요한 최소의 속성으로 구성되어야 한다.
- Candidate Key
- 후보키는 릴레이션을 구성하는 속성들 중에 튜플을 유일하게 식별하기 위해 사용하는 속성들의 집합이다.
- 기본키로 사용될 수 있는 속성을 의미한다.
- 유일성과 최소성을 모두 만족시켜야 한다.
- Priamry Key
- 후보키 중에 특별히 선정된 Main key이며, 한 Relation에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.
- 기본키는 중복된 값을 가질 수 없으며, NULL값을 가질 수 없다.
- Alternate Key
- 대체키는 후보키가 둘 이상일 때 기본 키를 제외한 나머지 후보키를 의미한다.
- 보조 키라고도 한다.
- Super Key
- 한 relation 내의 속성들의 집합으로 구성된 키를 말한다.
- 슈퍼키는 릴레이션을 구성할 때 튜플을 유일하게 구별할수 있는 유일성은 만족하나, 최소성은 만족하지 못한다. 즉 슈퍼키를 이루는 속성 하나가 빠져도 튜플을 구별할수는 있다는 것을 의미한다.
- Foreign Key
- 외래키는 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미한다.
- 한 Relation에 속한 속성 A와 참조 릴레이션의 기본키 B가 동일한 도메인상에서 정의되었을 때 속성 A를 외래키라고 하며, 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.
- 관계형 모델의 데이터 제약 조건
- 개체 무결성 : 특정 속성을 기본키로 지정할때 어떠한 경우에도 NULL과 중복을 허용하지 않는다.
- 참조 무결성 : 어떤 relation A가 다른 relation B의 튜플을 참조하려면, 참조하려는 그 튜플은 B relation내에 존재해야 한다.
- 도메인 무결성 : 특정 속성의 값은 그 속성에 정의된 대로의 값만 허용한다.
- EX) Age에는 address를 입력할 수 없다.
- ER 모델을 관계 모델로 변환하는 방법
일반적으로 ER 모델과 Relation은 다음과 같이 대응된다.
- 하나의 Entity는 하나의 Relation으로 대응
- Entity가 가지고 있는 Attribute들은 Relation의 Attribute로 대응
- Relation entity 또한 하나의 relation으로 표현한다.
- 특정 attribute 변환 방법
- 복합 attribute : 복합 attribute를 구성하는 독립된 attribute들은 나눠서 관계 모델의 attribute로 작성한다.
- Weak entity : 독립된 relation으로 작성하되, 참조하는 table의 PK를 FK로 추가한다.
- 유도된 attribute : 이는 따로 attribute로 추가하지 않는다.
- 다중값 attribute : 각 attribute를 독립된 튜플로 추가한다
- Relationship에 따른 변환 방법
- 1대1 관계 : 어떤 두 entity의 관계성이 1:1 일 경우에는 relation type에 해당하는 relation을 따로 만들지 않고, 한쪽의 entity에 다른 Entity의 primary key와 relation type의 attribute들을 attribute로 추가한다.
- 1:M 관계 : 역시 relation type에 해당하는 relation을 생성하지 않고 relation의 attribute를 다른 entity의 attribute로 추가한다.
- N:M관계 : 관계를 맺는 두 entity의 primary key를 가져와서 하나의 relation을 생성한다. 즉, 기존의 두 entity가 릴레이션으로 변환되고, primary key를 가져와 하나의 relation을 생성하여 세개의 relation이 생성된다.
'Web > Database' 카테고리의 다른 글
Amazon RDS 데이터베이스 구축(MySQL) (0) | 2022.02.22 |
---|---|
ERD, 어떻게 설계하는 걸까? (1) | 2022.02.21 |
Python으로 SQLite, MongoDB 접근해보기 (0) | 2020.05.25 |
MySQL 정리 (0) | 2020.01.19 |