테이블 설계의 기초

 

테이블은 관계형 데이터베이스에서 데이터를 저장하기 위한 저장소 입니다.

 

테이블을 어떻게 설계 하는지에 따라 성능 차이가 있고 나중에 머리가 아파지는 일이 줄어들게 됩니다.

 

여기서 말하는 테이블은 2차원 표와 같이 행과 열이 있는 형태입니다. 하지만 단순히 행과 열을 가지고 데이터가 들어가는 것은 아니고 어떠한 규칙이나 공통적인 요소를 모은 집합이라고 생각해야 합니다.

 

테이블 예

 과목번호

과목명

 강사명 

 CSE001

 데이터베이스 

 에덴 

 CSE002 

 운영체제  

 휴 

 CSE003

 네트워크 

 아담 

 

이 테이블은 컴퓨터 사이언스 과목을 공통적인 요소로 보고 만든 테이블입니다.

 

'과목번호', '과목명', '강사명'은 테이블의 속성이라고 불리며 테이블에 어떤 값들이 저장되어야 하는지 나타냅니다.

 

그리고 '과목번호'는 테이블의 기본기(Primary key)라고 볼 수 있습니다.

 

기본키는 테이블 설계 원칙 중에 하나인 '반드시 기본키를 설정'를 나타내기 위해 필요한 것입니다.

 

기본키를 사용하게 되면 데이터의 중복을 방지할 수 있고 유일성을 나타낼 수 있습니다.

 

또한 유일성을 가지고 있기 때문에 다른 테이블에서 데이터를 찾을 때 사용되기도 합니다.

 

그러므로 이 기본키 값이 중복이 되면 안됩니다. 만약 중복이 된다면 위에서 말한 내용들이 다 쓸모가 없어질 것입니다.

 

기본키는 값이 변동되면 안되는데 그 이유는 값의 유일성을 증명하지 못하고 과거의 데이터와 매칭을 할 수 없기 때문입니다.

 

또한 기본키는 NULL값이 들어 갈 수 없습니다.

 

 

정규형

 

정규형은 테이블을 어떤 기준으로 나눠서 데이터를 관리하게 만들지 기준이 되는 개념입니다.

 

정규형은 제1정규형부터 제5정규형까지 있습니다.

 

하지만 제3정규형까지 적용하더라도 어느정도 사용을 할 수 있을 정도의 수준이 됩니다.

 

제1정규형은 '테이블 셀에 여러개의 데이터를 말자' 입니다.

다르게 말하면 '모든 속성은 원자값을 가져야 한다' 입니다.

 

 과목번호

 과목명

 강사명 

 CSE001

 데이터베이스 

 에덴 

 CSE002 

 운영체제  

 휴 

 CSE003

 네트워크 

 아담, 휴 

 

이렇게 네트워크 과목이 아담과 휴 강사가 강의를 한다고 나타낼 수도 있습니다.

 

하지만 이렇게 하는 것은 관리하기도 어렵고 추천하고 싶은 방법은 아닙니다.

 

과목 테이블

 과목번호

 과목명 

 CSE001 

 데이터베이스 

 CSE002 

 운영체제 

 CSE003 

 네트워크 

 

과목 강사 테이블

 과목번호

 과목반 

강사면 

 CSE001 

 A 

 에덴 

 CSE002 

 A 

 휴 

 CSE003 

 A 

 아담 

 CSE003 

 B 

 휴 

 

 

이렇게 만들게 되면 한 셀에 여러개의 값이 들어가지 않아서 제1정규형을 지킬 수 있습니다.

 

제2정규형은 '종속성을 띄고 있는 데이터를 분리하자' 입니다.

다르게 말하면 '키를 제외한 나머지 속성들은 키에만 종속되어야 한다' 입니다.

 

수강신청 테이블

 학번 

 과목번호 

 신청일 

 학생명

 학과 

 2017012987 

 CSE001 

 2017/09/28 

 배수지

 컴퓨터공학과 

 2017012987

 CSE003 

 2017/09/30 

 배수지 

 컴퓨터공학과 

 2017023112 

 MSE005

 2017/09/30 

 김우빈 

 시각디자인학과 

 2017023114 

 MSE005 

 2017/09/30 

 김고은 

 시각디자인학과 

 2017012987 

 MSE005 

 2017/10/02 

 배수지 

 컴퓨터공학과 

 

이 경우는 여러개의 속성을 기본키로 만든 경우입니다.

 

각 데이터들은 각 셀에 데이터가 하나씩 들어가 있기 때문에 제1정규형은 지켜지고 있지만 제2정규형을 지켰다고 볼 수 없습니다.

 

데이터를 잘 보면 '학번', '학생명', '학과'가 서로 종속성을 보여주고 있습니다.

 

이렇게 종속성을 보여주는 형태가 있으면 제2정규형이라고 말할 수 없습니다.

 

그럼 종속성이 있는 부분만 따로 빼서 테이블을 만들면 제2정규형을 지킬 수 있습니다.

 

수강신청 테이블

 학번 

 과목번호 

 신청일 

 2017012987 

 CSE001 

 2017/09/28 

 2017012987 

 CSE003 

 2017/09/30 

 2017023112 

 MSE005 

 2017/09/30 

 2017023114 

 MSE005 

 2017/09/30 

 2017012987 

 MSE005 

 2017/10/02 

 

 

학생 테이블

 학번 

 학생명 

 학과 

 2017012987

 배수지 

 컴퓨터공학과 

 2017023112 

 김우빈 

 시각디자인학과 

 2017023114 

 김고은 

 시각디자인학과 

 

이렇게 구성 했을 때 제2정규형을 지켰다고 말할 수 있습니다.

 

그리고 데이터를 수정 했을 경우 한개의 테이블로 관리했을 때 수정해야 할 셀이 많지만 두개의 테이블로 관리 한다면 수정해야 할 셀이 적어지게 되고 관리가 편리해 집니다.

 

제3정규형은 '테이블 안에 두번 이상 연결 된 종속을 가지지 말자' 입니다.

다른 말로 '이행 종속이 있으면 안된다' 입니다.

 

학생 테이블

 학번 

 학생명 

 학과 

 교수코드 

 교수명 

 2017012987

 배수지 

 컴퓨터공학과 

 PROF001

 김로빈 

 2017023112 

 김우빈 

 시각디자인학과 

 PROF002

 소우진 

 2017023114 

 김고은 

 시각디자인학과 

 PROF002

 소우진

 

학생 테이블에 교수코드와 교수명이 추가가 되었습니다.

 

이럴 경우 '학번'이 '교수코드'와 종속관계이고 '교수코드'와 '교수명'이 종속관계이므로 한 테이블에 연결된 종속관계가 존재하게 됩니다.

 

이럴 경우는 제3 정규형을 지키지 못하는 형태 입니다.

 

학생 테이블

 학번 

 학생명 

 학과 

 교수코드(FK)

 2017012987

 배수지 

 컴퓨터공학과 

 PROF001

 2017023112 

 김우빈 

 시각디자인학과 

 PROF002

 2017023114 

 김고은 

 시각디자인학과 

 PROF002

 

교수 테이블

 교수코드

 교수명 

 PROF001 

 김로빈 

 PROF002 

 소우진 

 

이렇게 두개로 나눌 경우 한 테이블에 연결된 종속관계를 끊을 수 있습니다.

 

이 때 제3정규형을 지켰다고 말 할 수 있습니다.

 

 


테이블 설계의 기초

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

테이블은 관계형 데이터베이스에서 데이터를 저장하기 위한 저장소 입니다.

 

테이블을 어떻게 설계 하는지에 따라 성능 차이가 있고 나중에 머리가 아파지는 일이 줄어들게 됩니다.

 

여기서 말하는 테이블은 2차원 표와 같이 행과 열이 있는 형태입니다. 하지만 단순히 행과 열을 가지고 데이터가 들어가는 것은 아니고 어떠한 규칙이나 공통적인 요소를 모은 집합이라고 생각해야 합니다.

 

테이블 예

 과목번호

과목명

 강사명 

 CSE001

 데이터베이스 

 에덴 

 CSE002 

 운영체제  

 휴 

 CSE003

 네트워크 

 아담 

 

이 테이블은 컴퓨터 사이언스 과목을 공통적인 요소로 보고 만든 테이블입니다.

 

'과목번호', '과목명', '강사명'은 테이블의 속성이라고 불리며 테이블에 어떤 값들이 저장되어야 하는지 나타냅니다.

 

그리고 '과목번호'는 테이블의 기본기(Primary key)라고 볼 수 있습니다.

 

기본키는 테이블 설계 원칙 중에 하나인 '반드시 기본키를 설정'를 나타내기 위해 필요한 것입니다.

 

기본키를 사용하게 되면 데이터의 중복을 방지할 수 있고 유일성을 나타낼 수 있습니다.

 

또한 유일성을 가지고 있기 때문에 다른 테이블에서 데이터를 찾을 때 사용되기도 합니다.

 

그러므로 이 기본키 값이 중복이 되면 안됩니다. 만약 중복이 된다면 위에서 말한 내용들이 다 쓸모가 없어질 것입니다.

 

기본키는 값이 변동되면 안되는데 그 이유는 값의 유일성을 증명하지 못하고 과거의 데이터와 매칭을 할 수 없기 때문입니다.

 

또한 기본키는 NULL값이 들어 갈 수 없습니다.

 

 

정규형

 

정규형은 테이블을 어떤 기준으로 나눠서 데이터를 관리하게 만들지 기준이 되는 개념입니다.

 

정규형은 제1정규형부터 제5정규형까지 있습니다.

 

하지만 제3정규형까지 적용하더라도 어느정도 사용을 할 수 있을 정도의 수준이 됩니다.

 

제1정규형은 '테이블 셀에 여러개의 데이터를 말자' 입니다.

다르게 말하면 '모든 속성은 원자값을 가져야 한다' 입니다.

 

 과목번호

 과목명

 강사명 

 CSE001

 데이터베이스 

 에덴 

 CSE002 

 운영체제  

 휴 

 CSE003

 네트워크 

 아담, 휴 

 

이렇게 네트워크 과목이 아담과 휴 강사가 강의를 한다고 나타낼 수도 있습니다.

 

하지만 이렇게 하는 것은 관리하기도 어렵고 추천하고 싶은 방법은 아닙니다.

 

과목 테이블

 과목번호

 과목명 

 CSE001 

 데이터베이스 

 CSE002 

 운영체제 

 CSE003 

 네트워크 

 

과목 강사 테이블

 과목번호

 과목반 

강사면 

 CSE001 

 A 

 에덴 

 CSE002 

 A 

 휴 

 CSE003 

 A 

 아담 

 CSE003 

 B 

 휴 

 

 

이렇게 만들게 되면 한 셀에 여러개의 값이 들어가지 않아서 제1정규형을 지킬 수 있습니다.

 

제2정규형은 '종속성을 띄고 있는 데이터를 분리하자' 입니다.

다르게 말하면 '키를 제외한 나머지 속성들은 키에만 종속되어야 한다' 입니다.

 

수강신청 테이블

 학번 

 과목번호 

 신청일 

 학생명

 학과 

 2017012987 

 CSE001 

 2017/09/28 

 배수지

 컴퓨터공학과 

 2017012987

 CSE003 

 2017/09/30 

 배수지 

 컴퓨터공학과 

 2017023112 

 MSE005

 2017/09/30 

 김우빈 

 시각디자인학과 

 2017023114 

 MSE005 

 2017/09/30 

 김고은 

 시각디자인학과 

 2017012987 

 MSE005 

 2017/10/02 

 배수지 

 컴퓨터공학과 

 

이 경우는 여러개의 속성을 기본키로 만든 경우입니다.

 

각 데이터들은 각 셀에 데이터가 하나씩 들어가 있기 때문에 제1정규형은 지켜지고 있지만 제2정규형을 지켰다고 볼 수 없습니다.

 

데이터를 잘 보면 '학번', '학생명', '학과'가 서로 종속성을 보여주고 있습니다.

 

이렇게 종속성을 보여주는 형태가 있으면 제2정규형이라고 말할 수 없습니다.

 

그럼 종속성이 있는 부분만 따로 빼서 테이블을 만들면 제2정규형을 지킬 수 있습니다.

 

수강신청 테이블

 학번 

 과목번호 

 신청일 

 2017012987 

 CSE001 

 2017/09/28 

 2017012987 

 CSE003 

 2017/09/30 

 2017023112 

 MSE005 

 2017/09/30 

 2017023114 

 MSE005 

 2017/09/30 

 2017012987 

 MSE005 

 2017/10/02 

 

 

학생 테이블

 학번 

 학생명 

 학과 

 2017012987

 배수지 

 컴퓨터공학과 

 2017023112 

 김우빈 

 시각디자인학과 

 2017023114 

 김고은 

 시각디자인학과 

 

이렇게 구성 했을 때 제2정규형을 지켰다고 말할 수 있습니다.

 

그리고 데이터를 수정 했을 경우 한개의 테이블로 관리했을 때 수정해야 할 셀이 많지만 두개의 테이블로 관리 한다면 수정해야 할 셀이 적어지게 되고 관리가 편리해 집니다.

 

제3정규형은 '테이블 안에 두번 이상 연결 된 종속을 가지지 말자' 입니다.

다른 말로 '이행 종속이 있으면 안된다' 입니다.

 

학생 테이블

 학번 

 학생명 

 학과 

 교수코드 

 교수명 

 2017012987

 배수지 

 컴퓨터공학과 

 PROF001

 김로빈 

 2017023112 

 김우빈 

 시각디자인학과 

 PROF002

 소우진 

 2017023114 

 김고은 

 시각디자인학과 

 PROF002

 소우진

 

학생 테이블에 교수코드와 교수명이 추가가 되었습니다.

 

이럴 경우 '학번'이 '교수코드'와 종속관계이고 '교수코드'와 '교수명'이 종속관계이므로 한 테이블에 연결된 종속관계가 존재하게 됩니다.

 

이럴 경우는 제3 정규형을 지키지 못하는 형태 입니다.

 

학생 테이블

 학번 

 학생명 

 학과 

 교수코드(FK)

 2017012987

 배수지 

 컴퓨터공학과 

 PROF001

 2017023112 

 김우빈 

 시각디자인학과 

 PROF002

 2017023114 

 김고은 

 시각디자인학과 

 PROF002

 

교수 테이블

 교수코드

 교수명 

 PROF001 

 김로빈 

 PROF002 

 소우진 

 

이렇게 두개로 나눌 경우 한 테이블에 연결된 종속관계를 끊을 수 있습니다.

 

이 때 제3정규형을 지켰다고 말 할 수 있습니다.

 

 

[출처] https://googry.tistory.com/33

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 96649
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 87255
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 104139
42 블록체인 기반 플랫폼 비즈니스를 이해하자 졸리운_곰 2017.09.10 1675
41 다운타임 없는 서비스 구현 패턴 file 졸리운_곰 2017.09.10 1332
40 테이블의 수직분할과 수평분할에 대한 이해 file 졸리운_곰 2017.09.10 4060
39 정규화와 응집도에 대한 고찰 file 졸리운_곰 2017.05.28 1973
38 머신러닝 새 도전…“클라우드를 벗어나라" file 졸리운_곰 2017.05.28 1892
37 보안성 높이는 공공 거래장부 블록체인 file 졸리운_곰 2017.05.28 1932
36 디지털, 속도의 전쟁 VS 데이터, 품질의 전쟁 file 졸리운_곰 2017.05.05 1678
35 04. 데이터 모델링의 3단계 진행 file 졸리운_곰 2016.03.15 1807
34 데이터베이스 설계의 기본 원리.pdf file 졸리운_곰 2016.03.15 2451
33 실체유형(Entity Type) 정의 사항 및 도출 file 졸리운_곰 2015.05.21 2464
32 마농의 SQL 백문백답: 단순하고 쉽게 작성하는 SQL 노하우 [1회] file 졸리운_곰 2015.05.21 1943
31 sql개발자-sql전문가자격시험 시험 예제.pdf file 졸리운_곰 2015.02.15 2515
30 데이터베이스 선정에는 비밀이 있다 - 4부 졸리운_곰 2015.01.15 2429
29 데이터베이스 선정에는 비밀이 있다 - 3부 졸리운_곰 2015.01.15 2223
28 데이터베이스 선정에는 비밀이 있다 - 2부 졸리운_곰 2015.01.15 2043
27 데이터베이스 선정에는 비밀이 있다 - 1부 졸리운_곰 2015.01.15 2548
26 지금 우리에게 필요한 것은 데이터베이스 성능 최적화이다 (2부) 졸리운_곰 2015.01.15 1691
25 우리에게 필요한 것은 데이터베이스 성능 (1부) 졸리운_곰 2015.01.15 2117
24 21회 결과 secret 졸리운_곰 2014.11.10 0
23 [데이터아키텍쳐준전문가] 시험 fail 자료 secret 졸리운_곰 2014.08.31 0
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED