관계형 데이터베이스 모델은 데이터베이스를 관계, 무결성 제약의 묶음으로 표현한다.
sID | name | gender | deptName | year | GPA | totalCredit |
---|---|---|---|---|---|---|
152 | 이성계 | M | 컴퓨터학과 | freshman | 3.54 | 15 |
213 | 이방원 | M | 소프트웨어 | senior | 3.75 | 103 |
452 | 왕건 | M | 전정공 | sophomore | 4.33 | 38 |
142 | 진성여왕 | F | 스시소 | freshman | 4.12 | 18 |
542 | 선덕여왕 | F | 글로벌미디어 | sophomore | 1.85 | 58 |
위의 표는 student 관계의 예제이다.
이 관계는 7개의 속성(attribute)를 가지고, 5개의 터플(tuple)을 가진다. 각각의 속성은 속성 헤드가 있으며 위의 관계에서의 속성은 sid, name, gender, deptname, year, gpa, totalcredit 이다.
📌 관계형 데이터베이스 용어
relation = table
tuple = record, row
attribute = column
어떤 용어를 쓰던 본인 마음이다.
속성은 도메인을 가진다. → 속성 값은 도메인의 원소이다.
도메인 : 각 속성이 허용할 수 있는 값의 집합, 도메인은 값이 없다는 것을 의미하는 null 값을 디폴트로 가진다.
속성 도메인에 해당하는 값은 원자 값을 가져야 한다. → 원자 값 : 나눌 수 없는 값
하나의 관계에서 속성의 총 갯수를 차수(degree)라고 한다.
tuple의 총 갯수는 카디날리티(Cardinality)라고 한다.
앞에서 말했듯이 속성은 원자 값을 가져야한다.
원자 값이란 더 이상 분해할 수 없는 값(나눌 수 없는 값)이라는 뜻이다.
일반적으로 정수, 실수, 문자, 문자열, 시간, 날짜, 타임 스탬프 값을 원자 값으로 한다.
문자열은 분해가 되지 않나요?? → 분해가 가능하지만 관계형 DB에서는 문자열은 원자 값이다.
그러면 원자 값이 아닌 값은 무엇일까? → Multi value (집합, 리스트, 백), 복합 값 등
관계 스키마는 관계의 이름과 속성명을 나열한 것을 의미한다.
관계 스키마의 형태 : R = (A1, A2, A3, ... , An)
앞서 보았던 student 관계에서 관계 스키마를 써보면 student(sID, name, gender, deptName, year, GPA, totalCredit) 이다.
이 외에도 관계 스키마에는 속성의 데이터 타입, 관계와 관련된 무결성 제약도 함께 표현한다.
관계의 인스턴스는 각 속성의 도메인값의 모든 조합에서 부분 집합을 가진다.
즉 인스턴스는 도메인의 카티시안 곱의 부분 집합으로 볼 수 있다.
관계형 데이터베이스 시스템에서 데이터베이스는 관계와 제약 조건으로 구성이 된다.
무결성 제약은 다양한 형태가 존재한다. 대표적으로 키 제약(주 키는 중복된 값을 가질 수 없다.), 엔티티 제약(주 키는 널 값을 가지면 안된다.)가 있고 이 외에도 많은 무결성 제약이 존재한다.
관계형 데이터베이스에서 관계 간에는 순서가 존재하지 않는다. 또한 터플 간에서도 순서가 없다.
이는 관계형 데이터베이스에서 중요한 특징이며, 데이터베이스를 처리함에 있어서 편리함을 제공한다.
→ 데이터에 접근을 할 때 특별한 제한이 없음을 의미한다.
key는 속성의 집합으로 이루어진다.
super key : 터플을 유일하게 식별할 수 있는 속성의 집합 (유일성)
candidate key : 슈퍼키의 유일성을 유지하면서 가장 적은 수(minimal) 수의 속성으로 구성된 키
primary key : 데이터베이스 설계자가 candidate key 중 메인으로 지정할 key
📌 Minimal은 minimum이 아니다!!
간단하게 설명하면 특정 테이블에 후보 키가 2개가 있다고 할 때, 하나의 후보 키는 속성이 1개이고 다른 하나의 후보 키는 속성이 2개일 수 있다.
말로는 이해하기 어려울 수 있으나 아래의 예시를 보면 알 수 있다.
학생(학교이름, 학번, 주민번호, 나이, 거주지) 관계가 있을 때,
후보키로 가능한 후보는 (학교이름, 학번) 과 (주민번호) 이다. 둘 다 유일성을 유지하면서 가장 적은 수의 속성으로 구성된 키이다. 사용자는 이 중 하나의 키를 선택하면 그것이 primary key가 된다.
참조 무결성 제약(referential integrity constraint)은 관계형 데이터 모델에만 존재하는 제약이다.
value를 값으로 표현하기 때문에 발생을 한다.
참조 무결성에 대해 간단하게 설명해보면 특정 속성에서 나타나는 모든 값은 다른 속성 값의 일부여야 되는 무결성 제약이다.
📌 외래키(foreign key)와 참조 무결성
하나의 속성이 다른 테이블의 primary key를 참조하면 해당 속성을 외래키(foreign key)라고 한다.
이 때 이 외래키는 null 값 또는 해당 속성에 있는 value로만 결정이 되어야 하고 이러한 무결성 제약이 참조 무결성 제약의 예시이다.
DBMS가 관리해준다. 메타 데이터를 관리함 → 데이터에 대한 데이터