Hyperskill - 컴퓨터 CS 및 영어 독해/Introducing to SQL

Relational Data Model - 관계형 데이터 모델

코딩크리처 2024. 4. 3. 00:39

Relational Data Model - 관계형 데이터 모델


관계형 데이터 모델 (RDM)은 현대 데이터베이스들의 설계의 기초가 되는 추상적인 수학적 모델입니다.

여기 몇몇 관계형 DBMS가 존재합니다.

  • Postgres
  • MySQL
  • Oracle
  • 등등 ...

RDM을 아는 건 추후 현대적인 데이터베이스 구조에 대한 컨셉을 이해하는 데 도움을 주며,

정보 시스템을 유능하게 설계할 수 있습니다.

그럼 RDM의 주요 구성 요소를 탐색해 보러 가겠습니다.


Important terms - 중요한 용어들


몇 가지 정의 용어들과 함께 시작해 보겠습니다.

RDM관계의 개념을 바탕으로 합니다.

Relation (관계) 는 본질적으로 2차원 테이블입니다.

이는 몇몇 EntityRelationship을 표현합니다.


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 - 제한점


관계형 데이터 모델 내부의 관계에는 아래와 같은 사항의 제한점이 부과됩니다.

  1. 데이터베이스 내부에 같은 이름의 두 Relation 은 존재 할 수 없다.
  2. 같은 Relation 안의 모든 속성값들은 다른 이름을 가져야 한다.
  3. 각 셀에 하나의 값만 있어야 한다.
  4. 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 number123 혹은 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
88881234 Jason Kong 25.04.1998 1423 (참조 무결성 위반)

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에서 일을 잘 할 수 있을 것이란 뜻인 것 같다.

이는 당신에 데이터베이스 구조를 알맞게 디자인하게 도우며, 무엇을 수정할 때, 정보에 입각한 결정을 내리도록 도울 것 입니다.