스키마(schema)는 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명입니다.
즉, 데이터베이스의 청사진과 같습니다.
데이터가 어떻게 표현되어야 할 지 구상하고, 그 데이터를 정의하고, 데이터들 간의 관계를 구성하는 방법, 이 때 필요한 것이 스키마 입니다.
고유한 정보의 단위입니다. 데이터베이스에서 엔티티는 테이블로 표현할 수 있습니다.
데이터베이스 테이블의 열(column)에 해당합니다. 테이블에 저장된 모든 항목에는 해당 필드가 포함됩니다.
레코드는 테이블에 저장된 항목입니다. 행렬에서 행(row)이라 볼 수 있습니다.
교수
, 강의
, 학생
세 개의 엔티티가 있습니다.
보통, 한 명의 교수님이 여러 개의 강의를 가르칩니다.
한 명의 교수님은 여러 개의 강의를 할 수 없지만, 하나의 강의는 여러 명의 교수님이 가르칠 수 없습니다.
즉, 교수
와 강의
두 엔티티의 관계는 일 대 다 관계(1:N, one-to-many)
입니다.
이 각 엔티티 간 관계를 연결할 때, 각 엔티티 간 고유한 ID를 활용합니다.
이는 각 엔티티(테이블)의 레코드 하나를 가리키는 숫자로, 자동적으로 레코드가 추가될 때마다 ID도 증가합니다(auto increments). 이 ID 필드는 해당 테이블의 기본 키(Primary Key) 역할을 합니다.
교수
와 강의
엔티티 간의 일 대 다 관계를 연결하기 위해, 교수
의 기본 키를 강의
엔티티로 참조해오는 것으로 수행할 수 있습니다.
현재 테이블이 아닌 다른 테이블에서 기본 키(Primary Key)를 참조할 때 해당 값을 외부 키(Foreign Key)라고 합니다.
강의
테이블에서 교수
테이블의 기본 키(Primary Key)를 참조해야 하므로, 강의
테이블에 새로운 필드가 만들어지고, 그 필드는 교수
테이블에서 특정 레코드를 고유하게 식별하는 외래 키 입니다.
강의
와 학생
으로 보면,
하나의 강의
는 여러 학생
이 수강할 수 있습니다.
한 명의 학생
은 여러 개의 강의
를 수강할 수 있습니다.
강의
와 학생
엔티티 간의 관계는 다대 다(N:M, many-to-many) 관계
가 될 수 있습니다.
이 관계를 스키마에서 정의하는 방법은 일대 다 관계
와 조금 다릅니다.
새로운 테이블에 강의
의 기본 키와 학생
의 기본 키를 외래 키로 참조하여 새로운 필드를 만드는 것으로 관계를 형성할 수 있습니다.
이 새로운 테이블을 조인(join) 테이블이라 부릅니다.
하나의 강의
는 조인 테이블에서 여러번 등장하기 때문에, 일대 다 관계입니다. 마찬가지로, 한 명의 학생
이 조인 테이블에서 여러번 등장하기 때문에, 학생
테이블과 조인 테이블은 일대 다 관계입니다.