데이터베이스 #2 – 관계형 데이터 모델

관계형 데이터 모델(RDM;Relational Data Model)

관계형 데이터 모델은 현대 가장 많이 사용되는 데이터베이스 설계 모델이다. Postgres, MySQL, Oracle, MSSQL 등 이 있다. 이 모델의 이해를 통해서 데이터베이스의 정보 시스템 구축을 위한 설계 개념을 이해하는데 도움이 될 수 있다. 다음은 그 RDM의 구성 요소이다.

용어 정리

RDM은 관계라는 개념을 기반으로 한다. 관계는 어떤 실체들 간의 관계를 나타내는 2차원의 테이블이다.

엔티티(Entity)는 학생, 선생님, 자동차, 책 등과 같은 객체들의 추상화이다.

관계(Relationship)는 엔티티가 어떻게 상호 연결되는지에 대해 정의한다. 예를 들어 학생과 교실에서 학생은 반드시 하나의 교실에 소속되어야 한다면, 우리는 이 엔티티들의 관계를 다대일 관계라고 부를 수 있다.

관계는 속성(attribute)과 튜플(Tuple)로 구성된다. 아래 표를 보자.

학생 번호이름성별생년월일
20230503정규2010년 3월 5일

이 표에서 값을 정의하는 위 열 들을 속성이라고 한다. 그리고, 각 속성에 값들의 모임인 행을 튜플이라고 한다. 위 표의 경우, 20230503, 최, 정규, 남, 2010년 3월 5일 가 된다.

제한 사항(Restrictions)

관계형 데이터 모델의 ‘관계’는 다음과 같은 제약 사항이 있다.

  1. 데이터베이스에 동일 이름의 관계가 존재하면 안된다.
  2. 같은 관계내의 속성들은 다른 이름을 가져야 한다.
  3. 각 셀에는 하나의 값만 있어야 한다.
  4. 관계에서 행과 열의 순서는 중요하지 않는다.

엔티티의 무결성(Integrity)

무결성은 데이터 모델이 정해진 규칙에 부합하는 것이다. 무결성에는 엔티티 무결성과 참조 무결성 두 가지 종류가 있다.

엔티티 무결성은 테이블에서 두 개의 동일한 튜플(행)이 있을 수 없다는 것이다. 현실에서 절대적으로 동일한 물체는 없다는 것을 의미한다. 위에서 학생의 경우, 동일한 학생은 없도록 하는 무결성을 위해, 기본 키(PK)의 개념이 도입된다. 기본 키는 테이블의 각 레코드를 고유하게 식별하는 데 사용되는 필드 또는 필드의 집합으로, 두 개의 레코드가 동일하지 않도록 하는 것을 보장한다. 또한 특정 레코드에 효율적으로 접근할 수 있는 방법도 제공한다.

학생 번호(PK)이름성별생년월일반(FK)
20230503정규2010년 3월 5일20230201
학생

반(PK)담임 선생님교실번호교실전화번호
20230201김순희F04S0602-3333-4444
20230202이봉길F04S0702-3333-4445

위와 같은 환경에서 다음과 같은 신규 학생을 추가하는 경우를 생각해보자.

20230504규민2010년 6월 10일20230210

이 때, 반으로 입력하는 20230210이 반 테이블에 없는 경우, 우리는 학생의 엔티티 무결성을 해치는 경우라고 말할 수 있다.

참조 무결성

위에서 설명하는 테이블을 보면, 학생 테이블의 반의 속성(FK)이 반 테이블의 반 속성(PK)을 가리킨다. 이것은 하위 혹은 종속의 관계를 갖는다. 참조 무결성은 위와 같이 관계에서 기본 테이블의 튜플의 값중에 하위 테이블의 키를 참조하는 값이 존재하지 않는 경우 이 무결성을 위반하는 것이다.

위 테이블들의 관계에서 FK는 다대일(일대다) 관계를 만들어준다.

관계

앞서 일대다의 관계를 구성하는 테이블의 예를 보았다.

관계에는 다음과 같은 유형이 있다.

  • 일대일 관계(1-1) : 사람 – 주민등록증 과 같이 첫 번째 관계의 튜플 외에 다른 관계의 튜플이 연관될 수 없다.
  • 일대다 관계(1-M) : 학생 – 교실 같이 여러 튜플들이 소속되는 단일 그룹의 연관이 지정될 수 있다.
  • 다대다 관계(M-M) : 학생 – 공부 같이 여러 학생들이 다양한 공부를 할 수 있는 것과 같이 연관이 서로 하나 이상이 될 수 있다.

RDM은 다대다 관계가 존재하지 않는다. 구현은 두 개의 일대다 관계로 나뉘며 중간에 두 테이블의 기본키들을 외래키로 하는 연관 테이블이 구성된다.

장단점

RDM의 대중화를 이끈 기능은 쿼리 언어 SQL이다. 하지만, 최신 데이터베이스들에 비해 볼륨 확장성이 떨어질 수 있고, 중간 번역 계층 때문에 코드 복잡성이 증가될 수 있다.

데이터베이스 #1 – 소개

데이터베이스를 정리하는 시간을 갖는다.

데이터베이스

데이터 베이스는 컴퓨터가 처리하는 데이터의 모음이다. 이 데이터들은 빠른 검색을 제공하고, 이를 위해 특별하게 구성되어 있다.

현재 이러한 데이터베이스는 여러 개발사와 오픈 단체등의 의해 다양하게 존재하고 있다. 이전부터 다양하게 사용중인 대표 관계형 데이터베이스에는 Microsoft 의 MS-SQL, Azure SQL, Oracle 사의 Oracle과 오픈되어 관리되는 MySQL이 있다.

데이터베이스와 파일은 구분될 수도 있다. 데이터베이스의 구성이 파일에 의해서 구성되어질 수도 있지만, 이는 부분이고, 다양한 형태로 데이터를 구성하고 관리될 수 있다. 이런 데이터들을 제어하는 프로그램을 우리는 데이터베이스 관리 시스템(DBMS)이라고 부른다.

데이터베이스 관리 시스템

데이터베이스 관리 시스템은 사용자가 데이터를 정의, 생성하고 제어할 수 있는 소프트웨어다.

DBMS는 사용자의 질의(쿼리)를 최적화하고, 최적 방식으로 데이터베이스에서 데이터를 검색할 수 있다. 즉 사용자와 데이터베이스 사이의 중재자 역할을 제공한다. 사용자를 위해 제공되는 다양한 인터페이스를 통해서 우리는 데이터에 접근할 수 있다. 즉 데이터에 접근할 수 있는 인터페이스는 여러 형태의 방법을 통해서 데이터와 분리될 수 있다.

데이터에 대한 접근

데이터베이스에 데이터 항목이 증가할 수록 검색 속도에 영향이 생긴다. 이 때 최대한 데이터를 빠르게 검색하기 위해 데이터베이스는 스키마와 메타 데이터를 제공한다. (스키마는 데이터의 구성에 대한 방법을 설명한다. 메타 데이터는 데이터들의 구조적, 통계적 정보를 갖고 있다.)

DBMS마다 다양한 접근 방법을 제공하고 있다. 앞으로 정리한다.

데이터 일관성

우리가 데이터베이스를 사용하는 이유는 데이터가 정의된 바에 맞게 올바르게 유지하고, 복원하는 기능 때문이다. 물론, 구성과 스키마로 정의된 규칙에 의해서 데이터가 효율적으로 구성이 될지에 대한 유무를 갖을 수 있다. 특히 여러 사람들이 함께 사용하는 데이터베이스의 경우에는 이런 무결성을 유지하기 위해 더욱 더 이런 조건들을 고려해야 충돌의 영향을 줄일 수 있다.

또한 운영중에 저장공간의 손상에 의해서 데이터를 영원히 잃어버릴 수 있다. 이 때, 충분한 백업을 통해서 피해를 최소화 할 수 있도록 복원 시스템을 구성할 수 있다.

정리

  • 데이터베이스 제공 기능
    • 데이터를 저장하고 검색 및 업데이트를 할 수 있다.
    • 메타 데이터를 구성해서 효율적으로 구성한다.
    • 다양한 접근방법을 제공한다.
    • 여러 사용자들이 동시에 접근이 가능하다
    • 백업과 복원을 제공한다.
    • 데이터의 일관성을 위해 규칙을 정의할 수 있다.