[데이터베이스] 관계형 데이터베이스의 구조

2022. 10. 12. 00:32Intelligence Technology

관계형 데이터베이스

관계형 데이터베이스(Relational Database)1) 개체(Entity)나 2) 관계(Relationship)릴레이션(Relation)이라는 표(Table)로 표현하는 방식을 의미합니다. 개체를 표현하는 릴레이션을 개체 릴레

이션이라고 부르며, 관계를 표현하는 관계 릴레이션도 있습니다. 표로 표시를 하는 만큼 보기에도 간결하고 편하며 다른 관계형 DB로의 변환도 쉽습니다. 하지만, 표에서 직접 검색 후 값을 찾기에 성능은 다소 떨어지는 경향이 있습니다.

 

관계형 데이터베이스 종류(RDBMS)

관계형 데이터베이스 제조사 주요 내용
Oracle Oracle - 가장 많이 사용하는 RDBMS
- Unix, Linux, Windows 등의 대부분 운영체제에서 구동이 가능
- 중견기업 및 대기업과 같이 빅데이터를 운영하는 기관에 적합
MS-SQL Microsoft - Windows에서만 구동이 됨
- 성능에 따라 여러 에디션으로 구매를 해야 함
MySQL Sun Micro
systems
 Unix, Linux, Windows 등의 대부분 운영체제에서 구동이 가능하며 오픈소스로 많은 기업이나 DB가 필요한 쇼핑몰 등에서 사용

그 외에도 다양한 종류의 관계형 데이터베이스가 많이 있습니다. (APache - Derby / IBM - Infomix / MariaDB)

 

그렇다면 관계형 데이터베이스를 표현하는 각각의 항목들에 대해 알아보겠습니다.

1) 개체(Entity): 사람이 생각하는 개념이나 정보 단위 등의 집합체이며 서로 연관된 여러 개의 속성으로 구성, 독립적으로 존재하거나 그 자체로 의미를 가지기도 함

 - 학생의 엔티티: 이름, 학번, 학점, 전공 등

2) 관계(Relationship): 개체 간의 관계를 의미하며 1:1(일대일), 1:n(일대다), n:n(다대다)으로 구성됨

 - 1:1(일대일): A 집합 하나의 개체가 B 집합 하나의 개체와 대응하는 관계

1:1 관계도

 - 1:n(일대다): A 집합의 개체는 B 집합의 개체들과 한 번에 여러 번 대응할 수 있지만 집합 B의 개체는 집합 A의 개체와는 하나씩만 대응하는 관계

 

1:N 관계도

 - n:n(다대다): 집합 A의 개체들은 집합 B의 개체들과 여러 번 대응할 수 있고 반대의 경우도 가능

N:N 관계도

 

그렇다면 관계형 데이터베이스 설계는 어떻게 진행이 되는지 알아보겠습니다.

관계형 데이터베이스 설계는 표 형태로 표현을 하며 1) 튜플(Tuple)과 2) 속성(Attribute)의 집합으로 이루어집니다.

 

1) 튜플

 - 릴레이션을 구성하는 행을 의미

 - 속성의 모임으로 이루어짐

 - 튜플의 수를 카디널리티(Cardinality)라고 부름 -> 회사 릴레이션의 카디널리티는 4

 

2) 속성

 - 속성은 데이터베이스를 구성하는 가장 작은 논리단위

 - 개체의 특성을 표현

 - 속성의 수를 디그리(Degree)라고 부름 -> 회사 릴레이션의 디그리는 4 

 

3) 도메인

 - 하나의 속성이 취할 수 있는 같은 타입의 원자 값들의 집합

 - 추후 검증 시스템을 진행할 때도 값의 적절성 여부를 통해 합법 여부를 판단

 

4) 릴레이션

 - 하나의 릴레이션에 속한 튜플들은 중복되지 않음

 - 튜플 간에 순서는 없음

 - 튜플들은 연산(삽입, 삭제) 등의 작업이 진행되면 시간에 따라 변경 가능

 - 속성의 명칭은 유일해야 하지만 속성을 구성하는 값은 동일한 값을 가질 수 있음

 - 릴레이션을 구성하는 튜플을 유일하게 식별하는 수단으로 속성들의 부분집합인 키(Key)를 설정

 - 속성의 값은 가장 작은 원자 값만으로 저장

 

그렇다면 튜플을 유일하게 식별하는 수단인 키(KEY)는 무엇일까요?

키는 데이터베이스에 저장되는 데이터의 정확성을 보장하기 위해 제약 조건을 두는데 이때 활용되는 수단이 키(KEY)입니다. 키는 데이터베이스에서 검색 시 조건에 맞는 튜플을 찾거나 정렬할 때 구분을 할 수 있게 하는 속성(Attribute)에서 정하는데 1) 후보 키(Candidate Key), 2) 기본키(Primary Key), 3) 대체키(Alternate Key), 4) 슈퍼키(Super Key), 그리고 5) 외래키(Foreign Key)로 구성이 됩니다.

 

1) 후보키(Candidate Key)는 속성 등 중 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합입니다. 즉 기본키로 사용이 가능한 속성들입니다. 하나의 릴레이션에서는 중복된 튜플들이 있을 수 없으니 모든 릴레이션은 반드시 하나 이상의 후보 키를 두고 있습니다. 후보 키가 되려면 유일성과 최소성을 가져야 합니다.

유일성: 하나의 키값으로 하나의 튜플만 유일하게 식별

최소성: 꼭 필요한 속성으로만 구성(예를 들어 학번과 주민번호 속성이 있는 학생 릴레이션에서 학번+주민번호를 후보 키로 둘 수 없습니다. 2개의 속성은 각각의 존재로도 모든 튜플을 구별 가능하기 때문에 최소성의 규칙으로 학번과 주민번호를 후보키로 따로 두어야 합니다.)

 

2) 기본키(Primary Key)는 후보키 중에서 선택한 주키(Main Key)이며 튜플들을 유일하게 구별할 수 있는 속성입니다. Null 값을 가질 수 없으며 기본키로 지정된 속성은 동일한 값을 가질 수 없습니다(개체 무결성).

 

3) 대체키(Alternate Key)는 후보 키가 2개 이상일 때 기본키를 제외한 나머지 후보 키들을 지칭합니다.

 

4) 슈퍼 키(Super Key)는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키입니다. 앞서 후보 키의 최소성을 설명해 드릴 때 들었던 예시를 보시면 학번+주민번호는 슈퍼 키로 볼 수 있습니다. 즉 튜플을 식별할 수 있는 유일성은 가지고 있지만 최소성은 지키지 않는 키입니다. 

 

5) 외래 키(Foreign Key)는 관계가 있는 릴레이션 A, B 간에 A가 참조하는 B 릴레이션의 기본키와 같은 A 릴레이션의 속성을 의미합니다. 앞서 예시 드렸던 학생 릴레이션과 수강 릴레이션이 있고, 수강 릴레이션이 학생 릴레이션을 참조하고 있으면 학생 릴레이션의 학번 또는 주민번호는 기본키가 됩니다. 그리고 수강 릴레이션이 학번 또는 주민번호 중에 참조 하는 키가 있다면 외래키가 됩니다. 외래키 값은 Null이거나 참조하는 릴레이션의 기본키 값과 동일해야 하며 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 합니다(참조 무결성)

 

이상으로 관계형 데이터베이스에 대한 포스팅을 마치겠습니다.

 

오늘도 똑구의 꿀팁 블로그를 찾아주셔서 감사합니다.