관계형 데이터베이스(RDB) 개요

코딩하는 기린·2022년 6월 21일
0

Database(DB)

목록 보기
2/5

'관계형 데이터베이스(RDB:Relational Database)'는 릴레이션(테이블), 컬럼 등으로 관계를 정의하는 '관계형 모델'에 기초하여 데이터를 다루는 데이터베이스입니다.

구조

행(row)열(column)의 2차원으로 데이터를 표현하는 '릴레이션(Relation, =테이블(table))'에 데이터가 저장됩니다.

릴레이션 예시

위의 릴레이션은 'select'라는 SQL 구문을 사용하여 데이터를 검색한 결과로, 릴레이션의 이름은 'customer'이며, 파일처리 시스템의 '파일(file)'에 대응됩니다.

최상단에 'id, name, local, grade, credit'으로 이루어진 행을 '릴레이션 스키마(relation schema)'라 부르고, 릴레이션 스키마는 각 컬럼과 컬럼의 순서, 도메인 그리고 릴레이션의 이름을 포함합니다.
릴레이션 스키마의 id, name 같은 컬럼값을 각각 '컬럼 이름'이라고 합니다.

컬럼(열)은 컬럼에 위치한 값들을 뜻하고,'속성(attribute), 필드(feild)'라고도 부르며, 파일 처리 시스템의 '필드(feild)'에 대응됩니다.

릴레이션 스키마 아래에 위치한 데이터들의 행은 각각 '투플(tuple), 개체 인스턴스(entity instance), 레코드(record)'라고도 부르며, 파일 처리 시스템의 '레코드(record)'에 대응됩니다.

'도메인(domain)'은 해당 속성의 입력 가능한 값의 범위로, '데이터 타입'으로 정의되며, 각 속성에 적합한 데이터 타입을 사용해야합니다.
'credit' 컬럼의 도메인은 'int'가 사용되었습니다.

'차수(degree)'는 릴레이션에서 컬럼의 수를 뜻하며, 모든 릴레이션은 '1 이상'의 차수를 갖습니다.

'카디널리티(cardinality)'는 릴레이션의 '투플 갯수'를 뜻합니다. 아직 투플이 입력되지않은 릴레이션의 경우 카디널리티는 '0'이되며, 위의 릴레이션에서 카디널리티는 '5'가 됩니다.

릴레이션의 특징

  • 릴레이션 내의 컬럼의 이름은 서로 달라야합니다.
  • 컬럼은 다중 값을 가질 수 없으므로, 여러개의 값을 가지는 경우 서로 나누어 저장해야합니다.(원자성 : 컬럼은 여러 의미를 갖는 값으로 분해가 불가능해야함)
  • 컬럼은 해당 도메인에 맞는 값을 가져야합니다.
  • 컬럼은 순서의 구분이 없으므로, 순서가 바뀌어도 스키마는 동일합니다.(컬럼의 무순서성)
  • 릴레이션에서 투플의 순서는 구분하지않습니다.(투플의 무순서성)
  • 릴레이션에서 투플은 중복될 수 없으며, 하나의 키 값으로 하나의 투플을 유일하게 구분합니다.(투플의 유일성)

키(key)

'키(key)'는 릴레이션에서 투플을 유일하게 구분할 수 있게하는 컬럼입니다.
릴레이션에서 키 컬럼의 값은 서로 다른 값을 가져야하며(유일성), 유일성 유지를 위해 최소한의 컬럼으로 구성(최소성)해야합니다.

수퍼키(Super Key)

'투플을 유일하게 식별할 수 있는 컬럼 집합'입니다. 하나 이상의 컬럼으로 구성되며, 유일성에 따라 수퍼키에 속하는 컬럼값은 투플마다 달라야합니다.

위의 릴레이션에서 수퍼키는
(id), (name), (local),
(id, name), (id, local), (id, grade), (id, credit), (name, local), ...,
(id, name, local), (id, name, grade), ...,
(id, name, local, grade), (id, name, local, credit), ...,
(id, name, local, grade, credit)
처럼 각 투플을 유일하게 구분할 수 있는 컬럼의 집합입니다.

후보키(Candidate Key)

'수퍼키 중에서 최소성을 만족하는 키'로, 후술 할 기본키의 후보가 되며, 투플이 추가 및 수정되어도 유지되야합니다.

위의 릴레이션에서 후보키는
(id) 등이 될 수 있습니다.(id는 'NULL'값을 가질 수 없고, 수정되지않으며, 중복될 수 없다고 가정)
(name), (local) 같은 경우 현재는 후보키로서의 역할이 가능하지만, 투플이 추가 및 수정되었을 때 동일한 값을 가지는 투플이 생기면 후보키로서의 역할이 불가능해집니다.
(id, name)같은 조합의 경우 수퍼키는 가능하지만, 이미 (id)가 후보키로서 유일하게 투플을 식별 가능하기때문에 최소성을 만족하지 못하는 조합이되어 후보키는 될 수 없습니다.

기본키(PK:Primary Key)

'후보키 중 하나를 선정하여 기본키로 지정'합니다. 만약 후보키가 하나라면 그 후보키가 기본키가됩니다.
'NULL'값을 가져서는 안되며, 값이 수정되지 않아야하고, 유일성과 최소성을 만족하는 후보키입니다.

따라서 위의 릴레이션에서는 (id)가 기본키로 가장 적합합니다.

대체키(Alternate Key)

'기본키로 지정되지않은 후보키'입니다.

키 포함 관계

외래키(FK:Foreign Key)

'다른 릴레이션의 기본키를 참조하는 컬럼(컬럼의 집합)'으로, '릴레이션 간의 관계(Relation)'를 표현합니다.
다른 릴레이션의 기본키를 참조하므로, 동일한 도메인을 가져야합니다. 기본적으로 외래키는 다른 릴레이션의 기본키와 일치해야하지만, NULL 값을 가질 수도 있으며(NULL 값을 가지는 경우 해당 투플이 다른 릴레이션의 어떤 투플과도 연관성이 없음), 중복도 허용합니다.

  • 부모 릴레이션 : 참조 제공함(기본키)
  • 자식 릴레이션 : 참조 제공받음(외래키)

대리키(Surrogate Key)/인조키(Artificial Key)

시리얼 넘버처럼 '가상의 컬럼을 만들어 기본키로 사용'하는 키 입니다.
대리키/인조키는 기본키가 유출되면 안되거나, 기본키가 여러 컬럼으로 구성되어 복잡한 경우, 적절한 기본키가 없을 때 사용되며, DBMS가 임의로 생성하기때문에 직관적으로 알기 어렵습니다.

제약조건(Constraints)

데이터베이스 내의 데이터의 정확성 유지를 위해 특정 조건을 만족해야 하는 것으로, 릴레이션 내의 모든 투플들이 이 조건을 만족해야합니다.

※ 데이터 무결성
데이터베이스에 저장된 데이터가 일관성과 정확성을 유지해야하는 것으로, 투플이 삽입, 삭제, 수정될 때 제약 조건을 준수해야합니다.

도메인 무결성 제약조건(Domain Intergrity Constraints)

'영역 제약조건'이라고도 하며, 릴레이션의 투플은 각 컬럼의 도메인을 만족해야하고, 원자성을 만족해야합니다.
SQL 문에서 데이터 형식(type), NULL/NOT NULL, Default, Check 등을 사용하여 제약합니다.

개체 무결성 제약조건(Entity Integrity Constraints)

'기본키 제약조건(Primary Key Constraints)'이라고도 하며, 값의 중복이 있어서는 안되고, 기본키 값으로 NULL 값을 사용하면 안된다는 것입니다.

참조 무결성 제약조건(Referential Integrity Constraints)

'외래키 제약조건(Foreign Key Constraints)'이라고도 하며, 릴레이션 간의 참조 관계를 정의합니다.
자식 릴레이션의 값은 부모 릴레이션의 도메인에 맞는 값을 가져야하고, 자식 릴레이션에서 제공받고있는 값을 부모 릴레이션에서 삭제하거나 수정하면 안됩니다.

고유성 제약조건(Unique Constraint)

'키 제약조건(Key Constraints)'이라고도 하며, 각 투플들의 구분을 위해 기본키가 아닌 컬럼의 값들이 중복되어서는 안됩니다.

profile
Coding Giraffe.

0개의 댓글