[SQL] Schema & Query Design 개념 학습

hosik kim·2022년 1월 19일
0

With CodeStates

목록 보기
42/45

💡 Schema & Query Design


🔸 Schema

  • 스키마(schema)는 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티(entities) 간의 관계에 대한 설명이다.

즉, "데이터베이스의 청사진"과 같다.

데이터가 어떻게 표현되어야 할지 구상하고, 그 데이터를 정의하고, 데이터들 간의 관계를 구성하는 방법, 이 때 필요한 것이 스키마다


학교를 위한 데이터베이스를 구축한다고 가정할 경우 간단한 예로 School이라는 스키마 즉 DB의 청사진을 만들었다. 쉽게 교사(Teacher), 수업(Classes), 학생(Student)과 같은 데이터를 저장하기 위해 샘플을 준비해뒀다.

🔸 스키마의 구성

  • entities : Teacher, Classes, Students같은 테이블을 표현하는 정보의 단위이다.
  • fields : 각 테이블이 가지고 있는 열(column)들의 집합을 말한다. (교사에게는 이름, 부서, 수업 목록이 해당된다)
  • record : 행렬에서 행(row)에 행당되고, 각 열이 담고있는 자료를 말한다.

🔸 엔티티간 관계

샘플을 예제로 3개의 테이블의 관계를 알아보자. 가장 먼저 Teachers와 Classes의 관계를 먼저 확인해보자

일대 다(1:N, one-to-many)

보통, 한 명의 교수님이 여러 개의 강의를 가르친다.
한 명의 교수님은 여러 개의 강의를 할 수 없지만, 하나의 강의는 여러 명의 교수님이 가르칠 수 없다.

즉, 교수강의 두 엔티티의 관계는 일 대 다 관계(1:N, one-to-many)이다.

이 각 엔티티 간 관계를 연결할 때, 각 엔티티 간 교유한 ID를 활용한다.

이는 각 엔티티(테이블)의 레코드 하나를 가리키는 숫자로, 자동적으로 레코드가 추가될 때마다 ID도 증가한다(auto increments). 이 ID 필드는 해당 테이블의 기본 키(Primary Key)역할을 한다.

교수강의 엔티티 간의 일 대 다 관계를 연결하기 위해, 교수의 기본 키를 강의 엔티티로 참조해오는 것으로 수행할 수 있다.

현재 테이블이 아닌 다른 테이블에서 기본 키(Primary Key)를 참조해야 하므로, 강의 테이블에 새로운 필드가 만들어지고, 그 필드는 교수 테이블에서 특정 레코드를 고유하게 식별하는 외래 키이다.

다대 다(N:M, many-to-many)

강의학생으로 보면,

하나의 강의는 여러 학생이 수강할 수 있다.
한 명의 학생은 여러 개의 강의를 수강할 수 있다.

강의학생 엔티티 간의 관계는 다대 다(N:M, many-to-many) 관계 가 된다.

이 관계를 스키마에서 정의하는 방법은 일대 다 관계와는 조금 다르다.

새로운 테이블에 강의의 기본 키와 학생의 기본 키를 외래 키로 참조하여 새로운 필드를 만드는 것으로 관계를 형성할 수 있다.

이 새로운 테이블을 조인(join) 테이블이라 부른다.

하나의 강의는 조인 테이블에서 여러번 등장하기 때문에, 일대 다 관계이다. 마찬가지로, 한 명의 학생이 조인 테이블에서 여러번 등장하기 때문에, 학생테이블과 조인 테이블은 일대 다 관계이다.

profile
안되면 될 때까지👌

0개의 댓글