Relational Data Model - 관계형 데이터 모델
관계형 데이터 모델 (RDM)은 현대 데이터베이스들의 설계의 기초가 되는 추상적인 수학적 모델입니다.
여기 몇몇 관계형 DBMS가 존재합니다.
- Postgres
- MySQL
- Oracle
- 등등 ...
RDM을 아는 건 추후 현대적인 데이터베이스 구조에 대한 컨셉을 이해하는 데 도움을 주며,
정보 시스템을 유능하게 설계할 수 있습니다.
그럼 RDM의 주요 구성 요소를 탐색해 보러 가겠습니다.
Important terms - 중요한 용어들
몇 가지 정의 용어들과 함께 시작해 보겠습니다.
RDM은 관계의 개념을 바탕으로 합니다.
Relation (관계) 는 본질적으로 2차원 테이블입니다.
이는 몇몇 Entity 와 Relationship을 표현합니다.
Entity (엔티티) 는 물체의 추상적 개념입니다. (마치 OOP 클래스처럼)
OOP란 Object - Oriented - Programming의 약자로 객체 지향적 프로그래밍을 의미한다.
예를 들어 학생, 차, 빌딩입니다.
해석 : 학생, 차, 빌딩과 같은 실제적 물체도 객체 지향적인 관점으로 바라봤을 때 개별적인 속성을 가지고 있으므로, 프로그래밍으로 치환할 수 있다는 뜻 같습니다.
Relationship (관계) 는 어떻게 엔티티들이 상호 연결 될 수 있는지 정의 합니다.
Relation 은 속성과 튜플로 구성되어 있습니다.
Attribute (속성) 은 테이블 내부의 컬럼 (column)을 의미합니다.
개 중 몇몇 속성에는 관계가 있습니다.
예를 들어, 학생의 Relation에는 여러 속성이 있습니다.
Example :
last name
,first name
,date of birth
,student number
Tuple (튜플) 은 테이블 내부의 하나의 줄이기도 하며, 특정한 속성 값들의 모음이기도 합니다.
다시금 예를 들어, 학생 Relation 를 위한 속성값 student number
, last name
, first name
, date of birth
는 튜플 Tuple 이 될 수 있는데,
이는 88881111
, Jackson
, John
, 01.01.2000
이 될 수 있습니다.
이러한 속성값들의 Relation 는 쉽게 표시할 수 있습니다.
Example :
Student
(student number
,last name
,first name
,date of birth
)
student number | last name | first name | date of birth |
---|---|---|---|
88881111 | Jackson | John | 01.01.2000 |
Restrictions - 제한점
관계형 데이터 모델 내부의 관계에는 아래와 같은 사항의 제한점이 부과됩니다.
- 데이터베이스 내부에 같은 이름의 두 Relation 은 존재 할 수 없다.
- 같은 Relation 안의 모든 속성값들은 다른 이름을 가져야 한다.
- 각 셀에 하나의 값만 있어야 한다.
- Relation 내부의 줄과 열의 순서는 중요하지 않다.
Entity Integrity - 엔티티 무결성
Integrity (무결성) 은 특정한 규칙이 있는 데이터 모델의 적합성입니다.
두 종류의 무결성이 존재합니다.
==> Entity Integrity (엔티티 무결성) , Referential Integrity (참조 무결성)
엔티티의 무결성은 테이블에 두 개의 동일한 튜플이 있을 수 없다는 것을 의미합니다.
테이블에 똑같은 두 개의 줄이 존재할 수 없다는 것을 의미한다.
진짜 세상처럼, 우리는 완벽하게 똑같은 두 개의 물체를 가질 수 없습니다.
예를 들어, 똑같은 학생은 없으며, 모두 다릅니다.
엔티티의 무결성을 유지하기 위해서, Primary Key (PK) 의 개념을 설명하겠습니다.
Primary Key (중요 키) 는 테이블 내부의 각 레코드를 특별하기 식별하기 위해 사용되는 field이거나, set입니다.
동일한 두 개의 레코드가 존재하지 않는다고 보장합니다.
이건 매우 중요한데, 간단하면서도 효율적으로 특정 레코드에 접근할 수 있게 허용 해 줍니다.
또한, 중복된 두 개의 값은 방지하여 테이블 내부의 데이터가 무결성과 일관성을 유지하도록 돕습니다.
예를 들어, Student
, Group
이라는 두 개의 테이블 사이의 Relation(관계) 를 보이겠습니다.
Student
student number (PK) | last name | first name | date of birth | group number (FK) |
---|---|---|---|---|
88881111 | Jakson | John | 01.01.2000 | 123 |
88881122 | Peterson | James | 05.06.2001 | 123 |
88881177 | Depp | John | 15.03.1995 | 199 |
Group
group number (PK) | date of receipt (영수증 날짜) | faculty (학부) |
---|---|---|
123 | 12.04.2019 | Economics |
199 | 11.07.2020 | Mathematics |
Student 테이블의 Foreign Key 인 group number 가
Group 테이블의 Primary Key 인 group number 인 것을 볼 수 있습니다.
만약 우리가 밑의 정보를 가진 학생의 레코드를 추가하고 싶다면?
88881188 | Madison | Peter | 01.02.2002 | 132 |
위의 레코드 정보는 참조 무결성 위반을 일으킵니다.
이유는 우리가 group number
132
에 해당하는 레코드가 존재하지 않기 때문입니다.
group number
가123
혹은199
에 해당되야 한다.
용어 정리
cell
: 하나의 값을 담고 있는 속성 값 중 하나를 의미하거나, 한 레코드의 하나의 정보를 의미한다.column
: 열 이라는 이름으로 불리며, 테이블 내부의 속성 이름 값 중 하나를 의미한다.record
: 레코드는 테이블 내부에서 하나의 row, 즉 한 줄을 의미하며, 엔티티 무결성에 의해 테이블 내부에 같은 레코드가 존재 할 수 없다.relation, table
: 릴레이션과 테이블은 거의 동일한 의미로 쓰이나, 추상적이며 수학적 설계를 논의 할 경우 릴레이션을 사용하는 편이며, 실제적이고 구체적일 경우 테이블 이라는 단어를 쓰는 경우가 많다.ralationship
: 릴레이션(테이블) 간의 관계를 의미하며, 한 릴레이션의 (PK) 가 다른 릴레이션의 (FK)로 쓰일 경우 이 현상을 릴레이션십 이라고 부를 수 있다.Primary Key (PK)
: PK 는 한 테이블에서 동일한 정보를 가진 레코드들이 생기지 않게 방지 한다. (식별값)Foreign Key (FK)
: FK 는 한 릴레이션(테이블)에서 다른 릴레이션의 관계를 맺는 Key로 쓰인다.
FK는 참조하고자 하는 테이블의 PK를 사용한다.
Referential Integrity - 참조 무결성
참조 무결성은 우리가 두 개의 연결된 릴레이션을 가지고 있을 때 발생합니다.
릴레이션들의 관계는 forign key(FK) - (외래 키) 를 이용하여 제공됩니다.
FK는 릴레이션에 종속, 의존된 속성인데, 이것은 다른 릴레이션에서 주요, 마스터인 PK 를 가르킵니다.
예시 : 테이블1에서 FK로 쓰이는 속성은 테이블2에서 PK로 쓰인다는 것을 의미한다.
참조 무결성은 하위 테이블에 존재하지 않는 값을 가르키는 외래키가 메인 테이블에 존재할 수 없음을 의미합니다.
하위 테이블 : 메인 테이블의 PK를 참조하는 하위 테이블을 의미
메인 테이블 : 하위 테이블에게 FK를 제공하는 PK를 가지고 있는 테이블을 의미
만약, 메인 테이블에서 참조한 외래 키를 가져 왔을 때, 값이 존재하지 않는다면, 일관성이 깨지기 때문에, 강제됨.
예를 들어, 여기 두 개의 릴레이션이 존재합니다. student
, group
Group
은 숫자로 이루어진 속성(컬럼)을 가지고 있는데, 이는 (PK) 기본 키 입니다. - group number
Student
릴레이션도 같은 속성을 가지고 있는데, 이는 각 학생이 특정 그룹에 소속된다는 것을 가르킵니다.
Student
릴레이션에서는 group number가 외래 키 입니다.
만약 Student
테이블에서의 튜플에 존재하는 (FK) - group number 가
Group
테이블에 없는 group 튜플을 가르킨다면 이는 참조 무결성을 위반하게 될 것 입니다.
Student
student number | last name | first name | date of birth | group number(FK) |
---|---|---|---|---|
88881111 | Jackson | John | 01.01.2000 | 123 |
88881122 | Peterson | James | 05.06.2001 | 123 |
88881177 | Depp | John | 15.03.1995 | 199 |
Group
group number(PK) | date of receipt - 영수증 날짜 |
---|---|
123 | 12.04.2019 |
199 | 11.07.2020 |
FK (기본 키) 는 주로 다수 - 하나
혹은 하나 - 다수
릴레이션을 만들곤 합니다.
Pros and cons - 장점과 단점
RDM 이 매우 유명한 주요 이유 중 하나는 데이터와 쉽게 상호작용할 수 있는 쿼리 언어인 SQL이 있기 때문입니다.
또다른 이유는 집합론에 기초를 둔 수학적 장치이기 때문입니다.
RDM : Raima Matabase manager 의 약자로, 관계형 데이터베이스 관리 시스템 RDBMS의 한 종류이다.
매우 큰 데이터 볼륨에서는, 다른 데이터 모델들에 기초한 DBMS 구현이 관계형 DBMS 보다 더 확장성과 성능에 좋을 수 있습니다.
관계형 데이터 모델의 또다른 단점 중 하나는 다른 오브젝트 데이터 모델로부터의 차이점이 있습니다.
이는 Translational Layer (변환 레이어)가 필요한데, 코드 복잡성을 증가시키기 때문입니다.
Conclusion - 결론
요약하면, 관계형 데이터 모델은 대부분의 현대적 DBMS의 기초가 되는 더 복잡하고 일반적인 개념입니다.
당신이 이 주제로부터 얻은 정보는 정보 시스템 혹은 DBMS에서 당신으로부터 감춰진 마법같은 힘을 드러낼 수 있을 것 입니다.
위의 토픽들을 배움으로서 정보 시스템이나 DBMS에서 일을 잘 할 수 있을 것이란 뜻인 것 같다.
이는 당신에 데이터베이스 구조를 알맞게 디자인하게 도우며, 무엇을 수정할 때, 정보에 입각한 결정을 내리도록 도울 것 입니다.
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introducing to SQL' 카테고리의 다른 글
Arithmetic expressions - 산술 표현식 (0) | 2024.04.07 |
---|---|
Literals - 리터럴 (표기법) (3) | 2024.04.06 |
Basic Data Types - 기본적인 데이터 타입들 (0) | 2024.04.05 |
SQL: structured query language - 구조화 된 쿼리 언어 (0) | 2024.04.05 |
What are Databases? - 데이터베이스는 뭘까? (1) | 2024.03.31 |