데이터베이스 개발 단계
데이터베이스 개발 계획의 필요성 데이터베이스 개발 단계 1절. 데이터베이스 개발 개요 사용자 요구에 맞는 효율적인 데이터베이스 구축 데이터베이스 개발 단계 요구사항 분석 논리적 설계 물리적 설계 데이터베이스 구축
목적 산출물 요구사항 분석 데이터베이스를 구축하고자 하는 사용자들의 목적이 무엇인지 파악 데이터베이스 구축 목적, 업무 흐름, 개발 범위 등 사용자와 개발 환경에 대한 여러 가지 요구사항을 면담과 문서를 통해 분석 산출물 요구사항 명세서 분석된 요구사항을 기술하는 것으로, 이후의 모든 설계와 구축 작업의 기초가 되는 자료 업무흐름도 각 조직과 부서 간의 정보의 생성과 이동에 대한 흐름을 그림으로 표현
목적 산출물 논리적 설계 업무 처리에 필요한 자료와 속성을 기술하고, 자료간의 관계를 정의 특정 데이터베이스에 구애되지 않고 골격을 구축하는 작업 단계 데이터 모델링이라고 함 산출물 ERD(Entity-Relationship Diagram) 데이터베이스의 전체 구조를 쉽게 나타낼 수 있으며, 사용자와 함께 업무를 분석하고 검토할 때도 이용 엔티티(Entity)와 엔티티 간의 관계를 이해하기 쉽게 정해진 표기법에 따라 그림으로 표시
ERD 용어 논리적 설계 (계속) 엔티티(Entity, 개체) 관리 대상이 되는 독립적 특성을 갖는 사람, 사물, 사건, 개념 등 요구사항 명세서에서 명사형으로 표현 ERD에서 사각형으로 표시 회원 도서 < 회원 엔티티와 도서 엔티티의 표현 >
ERD 용어 논리적 설계 (계속) 속성(Attribute) 성질이나 상태 등 엔티티가 가질 수 있는 세부적인 특성 타원으로 표현되며, 엔티티에 실선으로 연결 회원 회원ID 이름 주민등록번호 주소 도서 제품코드 도서명 수량 정가 출판사 < 회원 엔티티의 속성과 도서 엔티티의 속성 표현 >
ERD 용어 논리적 설계 (계속) 인스턴스(Instance) 엔티티의 구체적인 하나의 예, 즉 단일 사례 엔티티는 인스턴스의 집합 < 회원 인스턴스 > 회원ID 이름 주민등록번호 주소 eun4814 은현철 7909251645678 대구 gdyoo 유경동 5810061454321 충남 geunsugi 황근의 7812252846512 경기 < 도서 인스턴스 > 제품코드 도서명 수량 정가 출판사 1 베이비 토크 25 13,000 마고북스 2 우리만의 커플여행 32 9,000 랜덤하우스 중앙 3 선물 50 8,500 중앙M&B
ERD 용어 논리적 설계 (계속) 기본 키(Primary Key) 하나의 엔티티 내에 똑같은 인스턴스가 존재하면 서로 구별하여 검색할 수 없고, 데이터 중복 문제 발생 인스턴스들을 서로 구별할 수 있는 유일한 값을 갖는 속성 필요 한 개 이상의 속성 조합으로도 구성 기본 키 속성에 밑줄 표시 회원 회원ID 이름 주민등록번호 주소 도서 제품코드 도서명 수량 정가 출판사 < 회원 엔티티와 도서 엔티티의 기본 키 표현 >
ERD 용어 논리적 설계 (계속) 관계(Relationship) 엔티티간의 연관성 요구사항 명세서에서 동사형으로 표현 (예) 회원과 도서: ‘주문 관계’, 사원과 부서: ‘소속 관계’ 관계가 있는 엔티티를 실선으로 연결하고 마름모 사각형 안에 관계 표시 회원 회원ID 이름 주민등록번호 주소 도서 제품코드 도서명 수량 정가 출판사 주문 < 회원 엔티티와 도서 엔티티의 관계 표현 >
목적 산출물 물리적 설계 개발에 사용할 데이터베이스 선정 특정 데이터베이스로 구현될 수 있도록 구체적인 설계 테이블 명세 엔티티를 테이블로 변환 ERD의 엔티티를 하나의 테이블로 나타내고, 각 엔티티의 속성을 테이블의 필드로 변환 엔티티들 간 관계의 변환 ERD에서의 엔티티 간의 관계는 테이블의 참조 키 설정으로 변환 속성의 데이터 형식과 각종 제약 조건, 인덱스 등을 설정
테이블의 참조 키 설정 방법 물리적 설계 (계속) 일대일 관계 두 테이블을 하나의 테이블로 통합 회원 회원ID 이름 주민등록번호 주소 결재 정보 신용카드번호 결재방법 은행계좌번호 결재 1 회원 회워ID (PK) 이름 주민등록번호 주소 신용카드번호 은행계좌번호 결재 방법 기본 키
테이블의 참조 키 설정 방법 물리적 설계 (계속) 일대다 관계 일에 해당하는 테이블의 기본 키를 다에 해당하는 테이블에 포함시키고 참조 키로 설정 회원 회원ID 이름 주민등록번호 주소 게시판 글번호 제목 내용 글쓴날짜 글올리기 1 다 게시판 회원 글번호 회원ID (FK) 제목 글쓴날짜 내용 회워ID 이름 주민등록번호 주소 참조 키
테이블의 참조 키 설정 방법 물리적 설계 (계속) 다대다 관계 새 테이블을 만들어 다대다 관계에 있는 두 테이블의 기본 키를 포함시키고 새 테이블의 참조 키로 설정 새 테이블의 기본 키를 만드는 방법 두 개의 참조 키를 조합하여 기본 키로 설정 새로운 필드를 추가하여 기본 키로 설정
두 개의 참조 키를 조합하여 기본 키로 설정 물리적 설계 (계속) 회원 회원ID 이름 주민등록번호 주소 도서 제품코드 도서명 수량 정가 출판사 주문 다 주문 회원 도서 회워ID 이름 주민등록번호 주소 회원ID (PK,FK) 제품코드 (PK, FK) 주문권수 주문일자 제품코드 도서명 수량 정가 출판사
2. 새로운 필드를 추가하여 기본 키로 설정 물리적 설계 (계속) 회원 회원ID 이름 주민등록번호 주소 도서 제품코드 도서명 수량 정가 출판사 주문 다 주문 회원 주문번호 (PK) 회원ID (FK) 제품코드 (FK) 주문권수 주문일자 도서 회워ID 이름 주민등록번호 주소 제품코드 도서명 수량 정가 출판사
물리적 설계 (계속) 테이블 명세 엔티티의 테이블 변환과 참조 키 설정 후, 테이블 필드의 데이터 형식(Data Type)과 제약 조건을 정의 < 회원 > No. 필드명 데이터 형식 길이 필수입력 빈문자열 인덱스 키 1 회원ID 텍스트 20 Y N Y(중복불가능) PK 2 이름 Y(중복가능) 3 주민등록번호 13 4 주소 100
테이블 명세 물리적 설계 (계속) < 도서 > < 주문 > No. 필드명 데이터 형식 길이 필수입력 빈문자열 인덱스 키 1 제품코드 일련번호 정수(Long) Y(중복불가능) PK 2 도서명 텍스트 50 Y N Y(중복가능) 3 수량 숫자 4 정가 통화 5 출판사 < 주문 > No. 필드명 데이터 형식 길이 필수입력 빈문자열 인덱스 키 1 주문번호 텍스트 9 Y N Y(중복불가능) PK 2 회원ID 20 FK 3 제품코드 숫자 정수(Long) 4 주문권수 5 주문일자 날짜/시간
정의 종류 2절. 정규화 데이터 중복을 막고 무결성을 강화시키기 위해 하나의 테이블을 둘 이상으로 분리하는 작업 제 1 정규형(First Normal Form, 1NF) 제 2 정규형(Second Normal Form, 2NF) 제 3 정규형(Third Normal Form, 3NF) Boyce-Codd 정규형(BCNF) 제 4 정규형(Fourth Normal Form, 4NF) 제 5 정규형(Fifth Normal Form, 5NF) 비정규형(De-normalization)
정규화 예제 2절. 정규화 (계속) 정규화 전: 일반적인 도서 주문 양식 도서 주문서 주문번호 : 040325001 회원ID : 이름 : 주민등록번호 : 전화번호 : 주소 : 결제방법 : 배송지 주소 : 도서명 출판사 정가 수량 금액 주문번호 : 040325001 miyoung 이미영 760508-2645731 031-315-4565 경기도 수원시 권선구 금곡동 신용카드 주문일 : 2004/3/25 누가 내 치즈를 옮겼을까 진명출판사 7,000 15 105,000 나의 문화유산답사기 창비 7,000 5 35,000 어린이 대통령 중앙M&B 6,000 1 6,000
정규화 예제 2절. 정규화 (계속) 정규화 전: 주문내역 테이블 주문내역 주문번호 회원ID 이름 주문일 도서명 출판사 정가 수량 금액 0325001 miyoung 이미영 3/25 누가 내 치즈를 옮겼을까 진명출판 7000 15 10500 나의 문화유산 답사기 창비 5 35000 어린이 대통령 중앙M&B 6000 1 0325002 tcbnukyo 김윤수 2 14000 극단의 형벌 교양인 12000 24000 0402001 kkamwl 신미원 4/2 가시연꽃 5000 선물 8500 10 85000
각 필드의 값들이 단일 값을 가지도록 하는 것 제1정규화 주문내역 주문번호 회원ID 이름 주문일 도서명 출판사 정가 수량 금액 0325001 miyoung 이미영 3/25 누가 내 치즈를 옮겼을까 진명출판 7000 15 10500 나의 문화유산 답사기 창비 5 35000 어린이 대통령 중앙M&B 6000 1 0325002 tcbnukyo 김윤수 2 14000 극단의 형벌 교양인 12000 24000 0402001 kkamwl 신미원 4/2 가시연꽃 5000 선물 8500 10 85000 주문번호 값이 중복되므로 기본 키가 될 수 없다
기본 키 설정을 위해 일련번호 필드를 추가하여 테이블 수정 제1정규화 (계속) 기본 키 설정을 위해 일련번호 필드를 추가하여 테이블 수정 주문내역 주문번호 일련번호 회원ID 이름 주문일 도서명 출판사 정가 수량 금액 0325001 1 miyoung 이미영 3/25 누가 내 치즈를 옮겼을까 진명출판 7000 15 10500 2 나의 문화유산 답사기 창비 5 35000 3 어린이 대통령 중앙M&B 6000 0325002 tcbnukyo 김윤수 14000 극단의 형벌 교양인 12000 24000 0402001 kkamwl 신미원 4/2 가시연꽃 5000 선물 8500 10 85000 기본 키
키가 아닌 모든 필드의 값은 기본 키에 종속적이어야 함 제2정규화 키가 아닌 모든 필드의 값은 기본 키에 종속적이어야 함 기본 키가 복합 키인 경우에는 키가 아닌 다른 필드들의 값과 기본 키 필드들의 값 전체가 서로 종속적인 관계에 있어야 함 주문내역 주문번호 일련번호 회원ID 이름 주문일 도서명 출판사 정가 수량 금액 0325001 1 miyoung 이미영 3/25 누가 내 치즈를 옮겼을까 진명출판 7000 15 10500 2 나의 문화유산 답사기 창비 5 35000 3 어린이 대통령 중앙M&B 6000 … 0402001 kkamwl 신미원 4/2 선물 8500 10 85000 극단의 형벌 교양인 12000 주문번호에 종속적
주문번호에 종속적인 필드를 분리하여 새 테이블 생성: 주문기본정보 테이블 제2정규화 (계속) 주문번호에 종속적인 필드를 분리하여 새 테이블 생성: 주문기본정보 테이블 주문내역 주문번호 일련번호 도서명 출판사 정가 수량 금액 0325001 1 누가 내 치즈를 옮겼을까 진명출판 7000 15 10500 … 0402001 2 선물 중앙M&B 8500 10 85000 3 극단의 형벌 교양인 12000 5 6000 주문기본정보 주문번호 회원ID 이름 주문일 0325001 miyoung 이미영 3/25 0402001 tcbnukyo 김윤수 kkamwl 신미원 4/2
키가 아닌 특정 필드의 값이 키가 아닌 다른 필드에 종속적일 경우 분리하는 것 제3정규화 키가 아닌 특정 필드의 값이 키가 아닌 다른 필드에 종속적일 경우 분리하는 것 주문내역 주문번호 일련번호 도서명 출판사 정가 수량 금액 0325001 1 누가 내 치즈를 옮겼을까 진명출판 7000 15 10500 … 0402001 2 선물 중앙M&B 8500 10 85000 3 극단의 형벌 교양인 12000 5 6000 도서명에 종속적
종속적인 필드들을 분리하여 새 테이블 생성: 도서 테이블 제3정규화 (계속) 종속적인 필드들을 분리하여 새 테이블 생성: 도서 테이블 주문내역 주문번호 일련번호 제품코드 수량 금액 0325001 1 15 10500 2 5 35000 3 6000 0325002 14000 … 0402001 6 10 85000 4 도서 제품코드 도서명 출판사 정가 1 누가 내 치즈를 옮겼을까 진명출판 7000 2 나의 문화유산답사기 창비 3 어린이 대통령 중앙M&B 6000 4 극단의 형벌 교양인 12000 5 가시연꽃 5000 6 선물 8500 주문기본정보 주문번호 회원ID 이름 주문일 0325001 miyoung 이미영 3/25 0325002 tcbnukyo 김윤수 0402001 kkamwl 신미원 4/2