스키마(Schema)
스키마(Schema)
란, 위키백과에 따르면 아래와 같은 정의를 가진다.
데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조.
- 그냥, 쉽게 이해하자면 DB내부의 테이블들의 구조와 관계를 표현하는 것 이라고 봐도 좋을 듯 하다.
- 데이터를 디자인하는 것.
Table
field 1 | field 2 | field 3 |
---|
record 1 | record 1 | record 1 |
record 2 | record 2 | record 2 |
- SQL에서 어떤 데이터들을 저장한 표이며, 하나의 데이터베이스는 다수의 테이블을 포함한다.
- 테이블을 만들기 위해서는 각 열이 가지는 이름과 데이터 타입을 지정해주어야 하며, 이를
필드(field)
혹은 컬럼(column)
이라고 한다.
- 각각의 필드에 들어간 값들을 가지는 행을
레코드(record)
혹은 튜플(Tuple)
이라고 한다.
- 저장된 값들을
데이터
라고 한다.
- 각각의 레코드들은
키(Key)
를 가질 수 있으며, 해당 값은 중복되지 않는 고유한 값이여야한다.
→ 보통 id
로 많이 사용한다.
- 이렇게 지정된
Key
를 내부키(Primary Key)
라고 하며, 이는 외부 테이블에서 외래키(Foreign Key)
로써 참조 될 수 있다.
엔티티(Entity)
엔티티(Entity)
는 객체처럼 여러 데이터를 가지고 있는, 테이블로 이루어진 정보의 단위이다.
엔티티
는 데이터를 저장하는 실체와 같으며, 일종의 명사라고 볼 수 있다.
→ 사람이라는 엔티티에 이름, 나이, 성별, 거주지라는 데이터가 포함된다고 생각 할 수 있다.
이름 | 나이 | 성별 | 거주지 |
---|
김평범 | 25 | 남 | 인천 |
박평범 | 12 | 남 | 서울 |
→ 사람이라는 엔티티(테이블)를 표로 표현했을 때.
관계
1 : 1
- 레코드와 레코드가 1 : 1로 관계를 가지는 경우.
- 하지만 보통 이 경우엔 스키마를 사용하기 보다는 직접 데이터를 할당하는 것이 더 효율적이다.
1 : N
- 어떤 테이블의 레코드 하나가 다른 테이블에서 여러개의 레코드와 관계가 있는 경우.
- 예를 들어 교수님과 강의실의 경우를 들 수 있다.
→ 하나의 교수님이 여러 강의실에서 강의를 한다.
- 이 경우 1에 속하는 테이블의 id 가 N에 속하는 테이블의 외부키로써 참조 될 수 있다.
N : N
- 두 테이블 사이의 레코드들이 서로서로 관계가 있는 경우
- 예를 들어 강의실과 대학생의 경우를 들 수 있다.
→ 대학생들이 여러 강의실을 돌며 수업을 듣는다.
- 이 경우 테이블과 테이블 사이에
조인 테이블(Join table)
을 사용하여 서로의 관계를 연결한다.
→ N : N
의 테이블 사이에 조인 테이블
을 놓음으로써, 각각의 테이블을 조인 테이블의 1 : N
으로 만든다.
자기 참조 관계(Self Referencing Relationship)
- 본 테이블 내부의 값을 참조해야하는 경우.
- 예를 들어 한 반의 학생들과, 그 짝을 연결하는 경우.
+
- 서로 다른 테이블간의 관계를 설정할 때, 외부 테이블의 자료를 어떻게 취급 할 것 인가에 따라 DB를 탐색하는 복잡도가 변할 수 있다.