관계 데이터 모델은 어떠한 구성으로 이루어져 있을까?
릴레이션 (Relation) [ = Table ]
--
관계 데이터 모델을 이해하기 위해
가장 핵심인 "릴레이션"을 이해해야 한다.
릴레이션은
행과 열로 구성된 테이블을 의미하고
사전적으로는 관계를 의미한다.
(릴레이션은 스키마와 인스턴스로 구성되어 있다.)
릴레이션 관련 용어
- 릴레이션 : 테이블
- 스키마 : 릴레이션에 어떠한 데이터가 담길지 정의한 것
- 인스턴스 : 스키마에 실제로 저장된 데이터들의 집합
- 속성 or 열 : 릴레이션에서 스키마의 각각을 속성 or 열이라고 부른다.
- 차수 : 해당 릴레이션의 속성 갯수 (item 릴레이션의 차수는 3)
- 튜플 or 행 : 릴레이션의 인스턴스에서 한 줄을 튜플 or 행이라고 부른다.
- 카디널리티 : 해당 릴레이션의 튜플 갯수 (item 릴레이션의 카디널리티는 6)
- 도메인 : 특정 열(Column)이 가질 수 있는 값들의 범위
릴레이션 특징
- 속성에는 단일 값만 저장 (속성의 값은 두 개 이상 저장 불가능)
- 속성명은 중복 불가능
- 하나의 속성의 값들은 모두 동일한 타입의 값만 저장
- 하나의 릴레이션에서 중복된 튜플 저장은 불가능
- 튜플 순서는 상관X
키 (Key)
릴레이션에서 사용하는 키는
DB에서 행(row)을 유일하게 식별하거나 테이블 간의 관계를 설정하는데 사용되는 속성 or 속성의 집합을 의미한다.
그리고 데이터의 "무결성"과 "일관성"을 보장하는 중요한 역할을 수행하며,
DB에서 중복된 데이터를 방지하고 데이터를 효율적으로 검색하는 데 도움을 준다.
키(key) 종류
- 기본 키 (Primary Key)
- 외래 키 (Foreign Key)
- 대체 키 (Alternate Key)
- 후보 키 (Candidate Key)
- 슈퍼 키 (Super Key)
- 복합 키 (Composite Key)
- 유니크 키 (Unique Key)
슈퍼 키(Super Key)는
행(row)을 유일하게 식별할 수 있는 하나의 속성 or 속성의 조합을 의미한다.
만약 릴레이션의 속성이 "고객번호", "이름", "주민번호", "전화번호"가 있다고 가정하면 (전화번호는 개인 휴대폰)
"고객번호" = 고객번호는 다른사람의 데이터와 겹칠일이 없으므로 고객번호 속성만으로 행을 식별할 수 있다.
"이름" = 이름은 다른 사람 또한 같은 이름의 값을 가질 수 있으므로 이름 속성만으로 식별이 불가능하다.
"주민번호" = 주민번호는 모든 사람이 가지는 고유한 값이므로 행을 식별할 수 있다.
"이름", "주민번호" = 이름만으로는 행 식별이 불가능이지만 주민번호와 함께 사용하면 식별이 가능해진다.
즉, (고객번호), (주민번호), (고객번호, 이름), (고객번호, 주민번호), (고객번호, 전화번호), (이름, 주민번호),
(고객번호, 이름, 주민번호), (이름, 주민번호, 전화번호), ... 등
행(row)을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있다.
후보 키 (Candidate Key)는
행(row)을 유일하게 식별할 수 있는 속성의 최소 조합을 의미한다.
이는 슈퍼 키 중에서 가장 크기가 작은 것이 후보 키가 된다.
즉, (고객번호), (주민번호), (전화번호)로 슈퍼 키 중에서 총 3개가 후보 키가 된다.
복합 키 (Composite Key)는
행(row)을 유일하게 식별할 수 있는 2개 이상의 속성 조합을 의미한다.
이는 슈퍼 키 중에서 속성을 2개 이상 묶은 슈퍼키가 복합 키다.
즉, (고객번호, 이름), (고객번호, 주민번호), (고객번호, 이름, 전화번호), ... 등이 복합 키가 된다.
기본 키 (Primary Key)는
행(row)을 유일하게 식별할 수 있는 속성 또는 속성의 조합을 의미한다.
일반적으로 후보 키 중에서 하나를 선정하여 릴레이션의 대표로 삼는 키를 의미한다.
릴레이션의 스키마를 표현할 때 기본키는 속성 밑에 밑줄을 그어 표시한다.
Member(고객번호, 이름, 주민번호, 전화번호)
릴레이션을 대표하는 키로
기본키를 선택하기 전에 여러 고려 사항들이 존재한다.
예시로
기본키 선택지 중에서 "주민번호"와 "고객번호"가 있다고 가정하면
우선 "주민번호"는 모든 사람들이 가지는 고유한 번호로 해당 값이 변경될 수 없으니
기본 키로는 적합하다고 생각할 수 있다.
다만 해당 값에는 "나이", "생년월일", "성별", "출생지" 등에 관한 개인 정보도 포함되어 있는 값이므로
개인정보 보호에는 취약할 수 있어 "주민번호"를 기본 키로 사용하기에는 부담이 크다.
그래서 "주민번호"보다는 "고객번호"가 기본키로 더욱 어울린다.
기본 키의 제약 조건
- 릴레이션의 행(row)을 식별할 수 있는 고유한 값을 가져야 한다.
- 중복된 값을 가질 수 없다.
- Null값은 허용하지 않는다.
- 키 값의 변동이 없어야 한다.
- 최대한 적은 수의 속성을 가져야 한다.
- 향후 해당 키를 사용하는 데 있어서 문제 발생할 소지가 없어야 한다.
대리 키 (Surrogate Key)는
기본 키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 경우
"일련번호"와 같은 가상의 속성을 만들어 기본키로 삼는 것을 대리 키라고 부른다.
사실 대리키는 원래 존재하지 않는 키인데 필요에 따라 만들어서 기본키로 대신에 사용하는 것이다.
예시를 들면
위에 작성한 테이블 그림에서 Member 릴레이션에 "id"속성이 대리 키가 된다.
대체 키 (Alternate Key)는
기본 키로 선정되지 않은 모든 후보 키를 가리킨다.
즉, 후보 키 중에서 기본 키가 아닌 나머지를 대체 키라고 부른다.
외래 키 (Foreign Key)는
현재 릴레이션에서 하나의 속성이 다른 릴레이션의 기본키를 참조하는 속성을 의미한다.
이를 통해 다른 테이블과의 관계를 정의하게 되는 키다.
이는 데이터의 무결성을 유지하는 데 도움을 준다.
외래키의 특징
- 관계 데이터 모델의 릴레이션 간의 관계를 표현
- 다른 릴레이션의 기본키를 참조하는 속성
- 참조하는 속성과 참조되는 속성은 같은 타입의 데이터를 가진다.
- 참조되는 값이 변경되면 참조하고있는 값도 변경된다.
- Null 값과 중복된 값은 허용된다.
- 자기 자신의 기본키를 참조하는 외래키도 존재한다.
- 외래키가 기본키의 일부가 될 수도 있다.
예시를 들면
위에 작성한 테이블 그림에서 Order 릴레이션에 "Member(id)"와 "item(제품명)"이 외래 키다.
유니크 키 (Unique Key)는
중복을 허용하지 않으며, 릴레이션(테이블) 내부에서 행(row)을 유일하게 식별할 수 있는 속성을 의미한다.
유니크 키의 특징
- Null 값 허용
- 중복된 값은 허용하지 않는다.
- 여러 개의 유니크 키를 설정할 수 있다.
--
관계 데이터 모델
--
관계 데이터 모델은
데이터를 2차원 테이블 형태인 릴레이션으로 표현하며,
릴레이션에 대한 "제약조건"과 관계 연산을 위한 "관계대수"를 정의한다.
제약 조건(Constraints)은
Member 릴레이션에서 "나이" 속성에 저장할 데이터는 음수가 있으면 안된다.
Order 릴레이션에서 "item" 속성에는 item 릴레이션에서만 참조해야 한다.
와 같은 규칙을 의미한다.
관계대수(Relational Algebra)는
관계형 데이터베이스(RDB)에서 데이터를 조회하고 조작하는 수학적 절차를 정의한 "질의 언어"를 의미한다.
--
무결성 제약조건
--
데이터베이스에 저장된 데이터는
결함이 없어야 하며, 질의에 대해 신뢰성 있는 답을 제공해야 한다.
즉, DB에 저장된 데이터의 일관성과 정확성, 신뢰성을 지키는 것을 의미한다.
만약 사람의 나이를 조회했는데 500이 나오거나,
대학에서 수강인원이 40명인 과목을 수강한 인원을 조회했더니 42가 나오면 안된다.
즉, 위와 같은 상황은 "무결성 제약조건"을 위배한 것이다.
3가지의 무결성 제약 조건
- 도메인 무결성 제약조건 : 특정 열(column)의 값은 허용된 값의 범위 내에 있어야 한다.
- 개체(엔티티) 무결성 제약조건 : 테이블 내의 행(row)은 고유해야 하며, 기본키는 Null 불가능하다는 것을 보장
(기본키에 대한 제약조건) - 참조 무결성 제약조건 : 한 테이블의 외래 키 값이 참조되는 테이블의 기본 키와 일치하며, 서로 관계 유지 보장
(외래키에 대한 제약조건)
DBMS에서는 위 3가지 무결성 제약 조건에서 추가로 "고유성 제약조건"도 사용한다.
고유성 제약조건은
(키에 대한 제약조건)이라고도 부르며
테이블 내의 특정 열에 중복된 값이 입력되지 않도록 보장하는 제약 조건이다.
--
관계대수 (Relational Algebra)
--
관계대수는
관계형 데이터베이스(RDB)에서 데이터를 조회하고 조작하는 수학적 절차를 정의한 "질의 언어(Query Language)"다.
DB의 릴레이션(테이블)에 대해 연산을 수행하여 새로운 릴레이션을 반환하는 일련의 연산들로 구성되어 있으며,
어떤 연산을 어떤 순서로 수행할 것인지도 명시되어 있다.
관계대수 연산자 종류
--
'SQL [DB]' 카테고리의 다른 글
[SQL문] 데이터 제어어 (DCL) (0) | 2024.09.13 |
---|---|
[SQL문] 데이터 조작어 (DML) (0) | 2024.09.12 |
[SQL문] 데이터 정의어 (DDL) (0) | 2024.09.12 |
데이터베이스 시스템의 구성 (0) | 2024.09.10 |
DB, RDB, DBMS, RDBMS (0) | 2024.09.09 |