DB Schema / ERD

박찬효·2022년 9월 18일
0

DB Schema란?

  • 데이터 베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것입니다.

  • 개체의 특성을 나타내는 속성과 속성들의 집합으로 이루어진 개체 개체 사이에 존재하는 관계 에 대한 정의와 이들이 유지해야할 제약조건들을 기술 한 것입니다.

  • DB내에 어떤 구조로 데이터가 저장되는가를 나타내는 데이터베이스 구조를 스키마라고 합니다.

Schema의 특징

  1. 스키마는 데이터 사전(Data Dictionary)에 저장됩니다.

    • 데이터 사전: 시스템 전체에 나타내는 데이터 항목들에 대한 정보를 지정한 중앙 저장소로, 이정보에는 항목을 참조하는데 사용되는 식별자, 항목에 대한 엔티티의 구성요소, 항목이 저장되는 곳, 항목을 참조하는 곳 등을 포함합니다.
  2. 현실 세계의 특정한 한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어지게 됩니다.

  3. 시간이 지나도 변하지 않습니다.

  4. 데이터 구조의 특성을 의미 하며, 인스턴스에 의해 규정됩니다.

Schema의 3단계 구조


이미지 출처

외부 스키마(서브 스키마)

  • 외부(사용자)에서 바라보는 스키마를 의미합니다.

  • 사용자들이 사용할 데이터들을 보여주는 것이기 때문에 추상화가 되어있고, 여러 사용자가 바라보는 관점에 따라 여러 스키마가 존재할 수 있습니다.

  • 사용자는 데이터베이스에서 데이터를 사용하는 사람이므로 응용 프로그래머라고 볼 수 있습니다.

  • 응용 프로그래머는 외부 스키마를 통해 구조를 확인하고 DML을 사용해서 데이터를 이용합니다.

개념 스키마

  • 전체적인 개념을 정의하는 것을 의미합니다.

  • 전체 데이터베이스가 어떤 구조로 되었는지 구체적으로 어떤 데이터가 있고, 그 데이터들은 어떤 테이블에 있는지, 각 테이블마다 어떤 관계가 존재하는지를 정의합니다.

  • 데이터베이스 자체의 전체적인 구조를 확인하기 때문에 개념 스키마를 확인하는 사람은 데이터 베이스 관리자 즉 DBA입니다.

  • DBA는 개념 스키마를 통해서 전체적인 구조의 개념을 확인하고 DDL과 DCL을 사용해서 구조를 설계합니다.

내부 스키마

  • 실제 데이터의 내부를 정의하는 것을 의미합니다.

  • 데이터의 내부에 있는 데이터의 필드 이름이 무엇이고, 해당 필드는 몇Byte이며 인덱스가 있는지 등을 정의합니다.

  • 데이터를 물리적으로 어떻게 저장할지에 대해 정의한 것이므로 저장 스키마라고도 부릅니다.

  • 물리적 저장장치의 입장으로 바라보기 때문에 내부 스키마를 확인하는 사람은 시스템 프로그래머입니다.

ERD 란?

개체-관계 모델입니다. 쉽게 생각하면, 테이블간의 관계를 설명해주는 다이어그램이라고 볼 수 있으며, 이를 통해 프로젝트에서 사용되는 DB의 구조를 한눈에 파악할 수 있습니다. 즉, API를 효율적으로 뽑아내기 위한 모델 구조도라고 생각하면 됩니다.

ERD Notation

ERD에는 여러 기호들로 관계를 표현할 수 있느나, 기호들만 숙지하여도 충분히 표현이 가능합니다.

이미지 출처

  1. One
    • 일대일 혹은 일대다 관계입니다. 주로 하나의 외래키가 걸린 관계라고 보시면 됩니다.
  2. Many
    • 다대다 관계입니다. 중계 테이블을 통하여 여러개의 데이터를 바라보고 있을때 사용합니다.
  3. One(and only one)
    • 위의 조건과 동일하게 일대일 관계이나, 하나의 row끼리만 연결된 데이터입니다.
  4. Zero or one
    • 일대일 혹은 일대다 관계를 가지고 있으나, 필수 조건이 아님을 의미합니다.비유를 하자면 개인정보 동의시, 필수값 구분과 선택값 구분이라고 보면 될 것 같습니다.
  5. One or Many
    • 일대일 혹은 다대다 관계를 가지고 있음을 의미합니다. 관계를 가지고 있느나, 참조되는 row값들이 불명확함을 의미합니다.
  6. Zero or Many
    • 참조하는 테이블과의 관계가 불명확한 경우입니다. 장바구니처럼 row 생성값이 없을수도, 하나일수도, 여러개일 수도 있는 경우입니다.
profile
개발자가 되기 위한 1인

0개의 댓글