티스토리 뷰

728x90
반응형

 포스팅은 데이터베이스 설계에 대해 알아보겠습니다.



먼저 스키마에 대해 알아보겠습니다.

스키마는 테이블과 열 그들이 서로 어떻게 연결되는지를 포현한 것과 종속관계를 나타냅니다.

테이블은 그림으로 그려보는 습관을 갖습니다.

관심사 열을 없애고 관심사만의 테이블을 만들어 넣도록 합니다.

테이블의 연결은 기본키(PRIMARY KEY)를 사용합니다.

기본키는 하나의 열로 이루어 지거나 두개 이상의 열(합성키)로 이루어집니다.

약어 (SonNara - SN, SonDara - SD state -> SF 샌프란시스코 등), 국가변경 등를 사용할 경우 원 이름에 대한 열에 함수적으로 종속되어 있다고 합니다.

간단한 표기 법 : T.a ->; T.b (T 테이블의 B열(약어)은 A열(원래)에 함수적으로 종속되어 있습니다.)

부분적 함수 종속은 합성키의 전부가 아닌 일부에 종속되어 있을 경우입니다.

이행적 함수 종속은 키가 아닌 열이 키가 아닌 열과 관련되는 경우입니다.


다음으로 외래키 OR 참조키(FOREIGN KEY)입니다.

어느 관심사가 my_contacts 테이블의 어떤사람과 연결되어 있는지 알수 있는 키입니다.

참조키는 테이블의 한 열로 다른 테이블의 기본키를 가리킵니다.

참조키에서 기본키는 부모키라고 하며 부모테이블이라 합니다.

참조키는 null일 수 있습니다.

참조키 제약조건은 참조 무결성을 나타냅니다. 

조키의 값으로는 부모 테이블에 존재하는 키의 값만 넣을 수 있습니다.

CREATE TABLE interests

(

 int_id  INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

 interest VARCHAR(50) NOT NULL,

    contact_id INT NOT NULL,

 CONSTRAINT  my_contacts_contact_id_fk

    FOREIGN KEY (contact_id)

    REFERENCES my_contacts(contact_id)

);

제약조건 CONSTRAINT table_column_fk 정도로 명명할 수 있습니다.

FOREIGN KEY는 현 테이블의 열에서 지정합니다.

REFERENCES는 부모테이블의 부모키로 지정합니다.

참조키 제약조건의 경우 참조키 행이 참조하고 있는 기본키의 행은 지울 수 없으며 참조키를 먼저 지워야 가능합니다.


참조키 패턴은 다음과 같습니다.

일대일 패턴 : 주민번호와 같은 유니크한 값을 매칭 할 경우 사용합니다. (선연결)

일대다 패턴 : 직업과 같이 한명당 하나의 직업을 갖지만, 그 직업을 갖고 있는 사람은 여러명일 경우 사용합니다. (한쪽끝에 화살표)

다대다 패턴 : 사람마다 다양한 신발을 가지고 있고 그 신발 목록을 정리하는 것과 같습니다. (양쪽끝에 화살표)

다대다의 경우 중복 데이터를 제거하기 위해 연결 테이블을 만들고 각 테이블의 기본키를 가지고 있습니다.


제2정규형은 다음과 같이 표현합니다.

1NF입니다.

부분적 함수 의존이 없어야 합니다.

합성키를 갖는 테이블의 부분적 함수 종속을 없애고 연결 테이블을 만듭니다.

부분적 함수 의존에 의해 여러 테이블로 나뉘며, 연결 테이블에는 합성키 모두에 의존하는 값만 모아 구성합니다.


제3정규형은 다음과 같이 표현합니다.

 2NF입니다.

이행적 종속이 없어야 합니다.


테이블을 만들고 테이블간의 종속관계를 선언하는 것은 데이터베이스를 설계하는데 가장 중요한 부분이라 할 수 있습니다. 위 내용을 기반으로 보다 정교하고 연관관계를 갖는 테이블 구조를 만드는데 노력을 기울여야 할 것입니다.

다음시간에는 다중테이블 연산 및 다양한 SQL을 추가로 알아보는 시간을 갖도록 하겠습니다.

고맙습니다.

728x90
반응형