코딩 성장기
[Database] 데이터 베이스 설계 본문
데이터 베이스에서 Schema(스키마)란?
데이터 베이스(data base)에서 데이터가 구성되는 방식과 서로 다른 entity(엔티티)간의 관계.
데이터 베이스의 '청사진' 이라고도 볼 수 있다.
entity(엔티티)란?
데이터들의 집합이라고 생각하면 편하다. 정보의 단위.
데이터 베이스 관련 용어
- table / relation : 데이터가 행으로 축적되는 구조화된 데이터.
- field / column : 데이터 테이블의 '열'
- record / tuple : 데이터 테이블의 '행'
- primary key(기본키) : 각 테이블의 레코드 하나를 가르키는 고유한 숫자. 자동으로 할당된다. ID 필드가 이에 해당됨.
- foreign key(외래키) : 현재 테이블에서 참조하고 있는 외부 테이블의 키값을 말할때 사용하는 용어.
키(key)에 접근하여 데이터를 수정 할 수도 있다.
데이터 관계 종류
1:1 관계
하나의 레코드(행)가 다른 테이블의 레코드 하나와 연결되어 있는 경우.
어느쪽에서 보더라도 서로 한개씩의 레코드끼리 연결되어 있다.(다른 레코드는 연결되어있지 않음)
예) 학생의 이름 - 학번
1:N 관계
하나의 레코드가 다른 테이블의 여러개의 레코드와 연결되어 있는 경우.
그러나 역은 성립하지 않는다.
예) 반 이름 - 해당 반에 속한 학생들의 이름
한 반에 여러 학생들이 속할 수는 있지만, 한 학생이 여러 반에 속할 수는 없다!
N:N 관계
여러개의 레코드가 다른 테이블의 여러개의 레코드와 연결되어 있는 경우.
1:N 관계와 다르게 역으로 봐도 성립이 된다.
다대다(N:N) 관계를 관리할때는 ID를 이용하여 join 테이블을 만들어서 관리한다.
함수의 '좌표계'처럼 생각하면 이해하기 쉽다.
예) 여러명의 학생들의 이름 - 여러개의 동아리
한 학생은 여러개의 동아리에 참여할 수 있고, 한 동아리에는 여러명의 학생들이 참여할 수 있다.
Student | Club |
1 | 1 |
1 | 3 |
1 | 7 |
2 | 1 |
2 | 2 |
→학생과 참여중인 동아리를 ID 값으로 연결시켜서 하나의 표(join 테이블)를 만듦
self referencing relationship(자기 참조 관계)
같은 테이블 내에서 데이터 끼리의 관계.
1:N 관계와 유사한 관계를 가질 수도 있으나, 일반적으로 1:N 관계는 자기 참조 관계로 나타내지 않는다.