DB2 - 1(설계전 이론)
| topics | 700-컴퓨터과학 |
| types | 레퍼런스 |
이론과 설계을 배워야하는 이유
이론의 중요성
- 결과를 예측할 수 있도록 도와준다.
설계의 중요성 - 데이터의 일관성,무결성,정확성에 영향을 준다
- 부적절하게 설계를 했을 경우 정보추출이 힘들고, 검색에서 부정확한 정보를 얻는 위험을 감수해야한다.
좋은 설계 방법론의 장점 - 단계적으로 기술의 조직화된 집합을 제공함
- 실수와 설계반복을 최소화 할 수 있음
좋은 설계의 목적 - db는 필수적인 것과 임의적인 정보 추출을 둘다 지원함
- 필드,테이블,관계수준에서 무결성이 부과됨
- 업뮤규칙을 지원함
좋은 설계의 이점 - db구조를 쉽게 수정,유지할 수 있음
- 정보추출이 쉬움
- 최종 사용자 어플리케이션 개발이 쉬워짐
전통적인 설계 방법
3단계를 거침
1. 요구사항 분석
- 모델이 되는 사업에 대한 조사
- 현재의 평가와 요구 분석을 위한 사용자 및 관리자와의 면담
- 사업전반에 대한 요구사항 평가
2. 데이터 모델링
- erd
- 관계는 다이아몬드,
- 의미-개체 모델링
- 개체-관계 모델링
ERD
DB1 - 데이터 모델링(DB 설계) 여기에 설명이 더 자세히 되어있음.
3.정규화
중복 데이터와 이중 데이터를 줄이고, 데이터 삽입-갱신-삭제에서 발생하는 문제를 줄여줄 수 있다.
DB1 - 종속성과 정규화
설계를 위한 용어
값 관련 용어
- 데이터 : 정적 , 데이터베이스에 ”저장“하는 값, 표면적 의미 없음
- 정보 : 동적, 무언가를 위해 의미 있고 유용하도록 처리한 데이터, 정보는 ”추출“하는 것
- null : 누락되었거나 미지의 값
- 누락 : 일반적으로 사람의 오류
- 미지 : 값이 정의디지 않음, 정말 unknown, 적용 되지 않음(적용하지않다/적용할 수 없다)
- 적용할 수 없는 경우 N/A가 더적합함
- 단점 : 널을 포함하는 연산은 널로 평가됨
구조 관련 용어
- 테이블
- 각 테이블은 항상 하나의 구체적 주제를 나타냄
- 주제는 개체 or 사건
- 관계형에서는 릴레이션이라고 불림,각 릴레이션은 튜플(레코드),속성(필드로) 구성
- 논리적으로 테이블을 구성함에 따라 데이터의 물리적 독립성을 유지
- 테이블내의 레코드와 필드의 논리적 순서는 중요치 않음
- 각 레코드 들은 식별하는 주키를 포함
- 종류
- 데이터 테이블
- 정보를 제공하는 테이블, 데이터 조작 가능
- 검증 테이블(lookup table)
- 데이터 무결성을 구현하는데 사용하는 데이터를 저장
- 정적임
- 값을 검증하기 위해 간접적으로 테이블 사용
- 일반적으론 주제를 나타냄
- 데이터 테이블
- 각 테이블은 항상 하나의 구체적 주제를 나타냄
- 필드
- db에서 가장 작은구조
- 속해있는 테이블의 주제의 특성을 나타넴
- 좋은 db는 한필드에 하나의 값(원자성)
- 잘못 설계된 db의 필드 종류
- 계산된 필드: 다른필드의 정보들을 계산한 결과를 포함하는 필드
- 다중 부분 필드 : 둘이상의 서로 다른 항목들을 값으로 가지는 필드
- 다중 값 필드 : 같은 종류의 값을 여러벌 가지는 필드
- 레코드
- 테이블 주제의 고유한 인스턴스
- 주키에 의해 테이블 전체에 걸처 식별
- 뷰
- 가상적 테이블
- 자체적으로 뎅터 저장 ㄴㄴ, 기반데이터들로 부터 데이터 추출
- db내의 정보를 다른 측면에서 볼 수 있음
- 여러 테이블로 온 데이터를 작업하는 것을 허용
- 사용자가 특정 필드를 보거나 조작하는것을 방지(보안에 굿)
- 데이터 무결성에 사용가능(검증뷰)
- 가상적 테이블
- 키
- 레코드 식별시 사용되는 논리적 구조
- pk : 전체 db에 걸처 특정 레코드를 식별하고 주키 필드는 전체 db를 거처 주어진 테이블을 식별함
- fk : 두 테이블 간의 관계설정, 관계수준의 무결성에 도움이 됨(고아레코드 방지)
- 인덱스
- 데이터 처리를 개선하기 위해 rdbms가 제공하는 구조
- 논리적 db 구조와 관련이 1도 없음
- 데이터 처리를 최정화 하기 위해 사용하는 물리적 구조
관계 관련 용어
- 데이터 무결성에 도움이 됨
- 중복 데이터를 줄이고 이중데이터를 베제하는데 도움이 됨
- 다중테이블 뷰를 만들 수 있게 해줌
- 참여 종류
- 강제적 : B테이블에 하나의 레코드를 삽입전에 적어도 A테이블에 적어도 하나의 레코드를 삽입해야함
- 선택적 : B테이블에 하나의 레코드를 삽입전에 A테이블에 레코드 삽입할 필요 없음
- 참여 수준
- 연관된 테이블의 한레코드와 반드시 연결되어야하는 테이블의 최소레코드 수와 허용되는 최대 레코드 개수를 결정함
- 왼쪽엔 최소 오른쪽에 최대
- ex) 테이블 : 대행사, 고객
- 대행사가 적어도 하나의 고객을 상대함 but 8명이상은상대하지 못함
- 참여수준 : 1,8
1) 일대일관계
- 서로 한레코드만 연관되어있을때
- 한테이블은 부모테이블역할, 다른 한 테이블은 자식역할
- 부모테이블의 주키의 복사본을 취해서 자식 테이블의 구조에 포함시킴(이거시 외래키가 됨)
2) 일대다관계
- A레코드가 B의 여러 레코드에 연관, 역은 오직 하나
- 부모,자식모델 성립
- 중복 데이터를 최소화 하는데 도움을 줌(데이터 무결성에 굿)
- 가장 일반적인 관계
3) 다대다관계
- 여러 레코드 link 여러레코드
- 서로 관계가 있는 주키의 복사본을 취함
- 연결테이블이라고 함
- 연결된 테이블끼리 레코드를 연결시키기 쉽게 해주고, 추가 삭제 수정에 문제 없도록 보장하는데 도움이 됨
- pkfk 합쳐서 연결테이블의 복합 주키를 형성
무결성 관련 용어
- 필드 명세 : aka 도메인
- 필드의 모든 요소를 나타냄
- 일반적 요소 : 필드 이름,설명,부모테이블등
- 물리적 요소: 어케만들어지고 어케표현할지
- 논리적 요소: 필드에 저장되는 값을 설명,필수값 범위 등
- 데이터 무결성
- 데이터의 유효성,일관성, 정확성을 가르킴
- db추출정보의 정확성은 데이터 무결성 수준에 정비례
- 테이블 수준의 무결성
- 중복 레코드 ㄴㄴ
- 각 레코드를 식별하는 필드가 유일하고 널이아님
- 필드 수준의 무결성(aka 도메인 무결성)
- 필드 구조가 정확하고 값이 유효하고 일관성있음
- 같은 종류의 필드가 db전체에 걸처 일관성있게 정의 됨
- 관계수준의 무결성(aka 참조 무결성)
- 테이블 쌍 관계가 정확함
- 임의의 테이블에서 삽입 갱신 삭제 될때마다 동기화 되는것을 보장
- 업무 규칙
- 조직이 데이터를 인식하고 사용하는 방법을 기초로함
- db의 특정한 측면에 대해 제약,규제를 부과
- 필드 내 저장되는 값을 번위와 형식, 참여종류와 수준 등 설계측면에 영향을 미칠 수 있음