스키마 : 테이블과 테이블이 어떻게 연결되는지 표현한 것.
테이블을 두개로 만드는 방법
1. 하나의 열을 없애고 없앨 열의 테이블을 따로 만들어 넣는다.
2. 원래 테이블의 기본키를 새 테이블의 참조키로서 삽입한다.
(두개의 테이블을 연결하는 방법)
참조키를 포함한 테이블 생성 방법
CREATE TABLE family
(
basic_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, //family테이블의 기본키 지정
family_name VARCHAR(30) NOT NULL, //열 생성
f_id INT NOT NULL, //참조용 키(f_id) 생성
CONSTRAINT my_table_count_id_fx //참조할 테이블과 그 기본키에 제약조건을 건다
FOREIGN KEY ( f_id ) //참조키 지정
REFERENCES my_table ( count_id ) //참조키가 참조하는 테이블과 열을 표시
);
//제약조건을 걺으로서 참조 무결성 유지. 즉, 부모 테이블의 키 값만을 넣을 수 있다.
스키마 관계
1. 1:1 관계
- 꼭 필요한 상황에만 쓰이고 잘 안쓰임(빠른조회, 대용량자료, 보안)
2. 1:N 관계
- 하나의 부모키로 테이블의 여러 열을 조회
3. N:N 관계
- 여러 부모키로 여러 열 조회
- 테이블과 테이블을 직접 다대다로 연결하면 모든 자료가 통합되버림
-> 중간에 연결 관계를 알려주는 연결 테이블을 생성하여 1:N의 관계를 두개로 연결하여 사용한다.
합성키
-합성키는 두개 이상의 열을 선택해 유일무이한 하나의 기본키로 만드는 것.
종속적 관계
- 열의 데이터가 바뀌면 종속되는 데이터도 같이 바뀐다.
종속관계 표기법
T.x ->; T.y
//T 테이블에서 열 y는 x에 함수적으로 종속된다.
정규화
제1정규형
- 열은 원자적 값만 포함. (콤마로 여러 데이터를 하나의 열에 포함하면 안됨, 하나의 성분만을 포함)
- 같은 데이터가 여러 열에 반복하면 안됨.
제2정규형
- 제1정규형을 포함
- 부분적 함수 의존이 없다.
이와 같이 부분적 종속이 아닌 절대 종속인 부분들로 나눠서 구성한다.
위의 toy_id, store_id는 합성키이다.
제3정규형
- 제2정규형 포함
- 이행적 종속이 없다(??)
고유한 데이터 : 개인의 특수한 정보와 같은 하나뿐인 데이터
일정한 범위의 데이터 : 이미 정해진 데이터들의 집합