DB2 -3

topics 700-컴퓨터과학
types 레퍼런스

< 필드 명세 >

필드는 주제의 특성성을 나타냄
필드 명세를 정의함으로써 데이터의 무결성을 설정

중요 이유

  • 필드 수준의 무결성 달성
    • 필드의 주체성과 목적이 명확하고 모든테이블이 적절히 식별
    • 필드의 값들이 일관성 있고 유효함
    • 필드 정의가 일관성이 있음
  • 전반적인 데이터의 본질과 목적을 이해하는데 도움을줌
  • 데이터 사전을 구성

이상적 필드의 요소

  • 테이블 주제의 고유한 특성을 나타냄
  • 단지 하나의 값만 포함함
  • 더 작은 구성요소로 해체될 수 없음
  • 계산되거나 연결된 값을 포함하지 않음
  • 전체 데이터베이스 구조안에서 유일함
  • 하나 이상의 테이블에서 나타날 때에는 속성의 대부분을 보유함
    • 서로다른테이블에 같은 필드가 나타날때 속성(값)이 유지되어야한다.

일반적 요소

필드의 가장 기초적인 속성들을 나타냄

  • 필드이름
  • 부모테이블
  • 라벨
    • 최종 사용자 에플리케이션 인터페이스 내에서 필드를 식별하는 다른이름임
    • 일반적으로 더 짧음
    • 화면 공간상의 문제나 사람들이 더 익숙할때에 사용
    • 라벨을 공식적인 필드 이름으로 사용하면 안됨
      • 잘못 해석하거나 부정확하게 식별할 수 있음
  • 명세 종류(Specification type)
    • 유일(Unique)
      • 외래키를 사용하는 필드 외에 일반적인 기본 명세
      • 요소 설정(제약조건들 데이터타입같은것들)이 이필드에만 적용됨
    • 일반(generic)
      • 다른 필드 명세의 템플릿으로 사용되며, 같은 일반적 의미를 가진 필드를 일관성있게 정의한다.
      • 넓고 일반적인 비특정 필드 이름과 요소 설정을 사용한다.
      • 약간 주, 이름,전화번호 같이 묶일 만한 것
    • 복제(replica)
      • 외래 키로 사용되는 필드에 대한 기본 명세
  • 원본 명세(Source Specification)
    • 오직 복제 명세에만 설정됨
    • 기초하고 있는(원본) 필드의 이름을 가르킴
  • 공유(Shared By)
    • 필드를 공유하는 다른 테이블들의 이름을 가르킴
  • 별칭(Alias)
    • 필드를 위해 사용하는 집합임
    • 매우 드문 상황에서 사용
    • 사려깊게 사용 되야함
      • 관리 유지가 힘들어지거나 의미를 숨기거나 바꿀 수 있음
  • 설명(Description)
    • 필드에 대한 해석
    • 적절한 설명을 작성하는대 어려움이 있다면 필드가 추가적인 정제를 필요할 수 있음
    • 명확하고 간결한 문장
    • 기술적인 은어 약어를 피함
    • 필드 이름을 재설명하거나 수식하지 않음
    • 다른 필드의 설명에 의존하지 않음
    • EX) 고객 시(CustCity) - 고객이 거주하거나 사업을 수행하는 도시 지역. 이것은 고객의 완전한 주소의 필수 구성 요소다.

물리적 요소

요소들은 일반적인 용어로 표현됨
데이터베이스 전체에 걸친 일관성 있는 필드 정의를 보장함
RDBMS에서 필드 구조를 구현하는데 걸리는 시간을 줄임

  • 데이터형
    • character : 고정(char) or 가변(varchar) 길이
    • national character(국가별문자) : 문자와 같지만 외국어 문자 집합으로 온 문자들도 저장할 수 있음
    • bit : 디지털화된 이미지나 사운드 같은 이진숫자의 연속
    • exact numeric(정밀 숫자) : 정수 및 소수점 포함 숫자들을 저장함, Numeric, Int,Dec 등
    • approximate numeric(근사 숫자): 소숫점과 지수를 가진 숫자를 저장함, FLOAT, REAL, DOUBLE RECISION
    • dateTime(날짜/시각) : RDBMS마다 처리방식이 다를 수 있음, Timestamp
    • interval(간격) : 두 개의 날짜/시각 값들 사이의 시간의 양을 저장함
      • 주요 rdbms는 이형을 지원하지 않음
  • 길이
    • 최대 개수를 지정
  • 소수점 위치(Decimal Place)
    • 실수에서 소수점 오른쪽의 자리수를 나타냄
    • 자리수는 실수의 정밀도를 결정함(화폐는 일반적으로 4자리까지)
  • 문자 지원(Character Support)
    • 필드 값으로 입력할 수 있는 문자들의 종류
    • 사용자가 의미없는 데이터를 필드에 도입하지 못하게함
      • 필드 수준의 무결성
    • letter, 숫자, 키보드문자(* &^ ,=! ), 특수문자(special)
  • 입력 마스크(Input Mask)
    • 필드에 데이터를 입력하는 방법을 지정
    • 날짜나... 같은 것들
  • 디스플레이 형식
    • 필드 값이 화면에 표시되거나 문서내에 인쇄될때 외형을 통제

논리적 요소

  • 키 종류
    - 주키, 대체키, 비키, 왜래키
  • 키 구조
    • 주키로 설정된 필드일때 사용
    • 단순필드(단일필드)인지 복합(다중필드)주키의 한부분인지 나타냄
      • 복합주키는 주키의 필드가 두개이상일것을 말함
  • 유일성(Uniqueness)
    • 주키 : unique, 이 외 : non -uni
  • 널 지원
  • 값 입력자(Values Entered By)
    • 값 입력의 원천을 나타냄
    • 시스템, 유저 가 있음
  • 필요 값(Required Value)
    • 사용자가 필드를 위해 값을 입력할 필요가 있는지 여부
  • 기본 값(Default Value)
    • 널이 허용될 때 사용자가 필드에 입력할 수 있는 값임
    • 사려있고 의미가 있을때 사용
  • 값 범위
    • 상하한값이나 특정값의 목록 등으로 범위를 설정
    • 값 범위를 설정할 수 있는 세가지 범주
      • 일반적 : 필드를 위한 모든 가능한 값의 집합(미국의 주)
      • 무결성 특유 : 테이블 관계에서의 필드의 역할에 기초로 둔 값의 집합
      • 업무 특유 : 업무 요구사항에 의해 생성된 값들의 집합
    • 다른것, 기타 같은 값이 들어가면 안됨
  • 편집 규칙
    • 언제 "사용자"가 필드에 값을 입력, 수정할지 여부 나타냄
    • 입력 : 지금/추후 , 수정 : 허용/불허
    • 수정 불허일 경우 기본값을 사용해야만 함
  • 허용 비교
    • 사용자가 필드로 부터 정보를 추출할 때 주어진 필드 값에 적용할 수 있는 비교의 종류를 나타냄
    • 비교 종류 : 같음(=), 같지 않음(≠), 큼(>), 작음(<), 크거나 같음(>=), 작거나 같음(<=)
    • 비교 옵션
      • 같은 필드 내의 다른 값 : 필드가 주키로 사용될때 , 이옵션이 외래키 필드 값에 포함됨
      • 다른 필드 : 부모테이블 내 또는 다른 테이블의 다른 필드값
      • 값의 연산식 : 필드값,상수값 또는 두가지의 조합을 포함한 연산의 형식 ex ) 가격 - 30
    • ex) id값은 = 의 비교 밖에 필요없다
  • 허용 연산
    • 연산 종류 : - 더하기(+), 빼기(-), 곱하기(×), 나누기(÷), 연결(concatenation)
    • 연산 옵션 : 허용 비교와 같다
    • 주어진필드를위해허용연산요소를설정하면서적절한연산을지정할수있도록하 기 위해 어떻게 필드의 값을 사용하려고 하는지에 대해 생각함

<관계>

중요한 이유

  • 이중데이터를 최소화하도록 도와줌
  • 여러 테이블로부터 동시에 데이터를 추출할 수 있도록 함
  • 관계수준의 무결성
    • 관계 내 두테이블 연결이 정상적임(외래키사용 연결테이블)
    • 의미있는 방법으로 각테이블에 새 레코드를 삽입가능
    • 역효과를 만들지않고 기존 레코드를 삭제
    • 상호 연관될 수 있는 레코드 수에 의미있는 제한이 있음

관계의 종류

다이어그램은 최소 주키는 포함시켜서그려야함
약간 pk에관계된 행이몇개?의 관점에서보는게 좋은듯?

일대일

서로 하나의 레코드와만 연관될 때
부분 집합 테이블인 경우가 있음
400

연결 방법

주키와 외래키 이용
부분집합테이블의 경우 부모 테이블의 주키를 외래키로 가짐
300
다이어그램의 연결점이 외래키로 가지는 부분이어야함

일대다

한레코드가 다른 테이블의 하나이상의 레코드와 연결 될 수있을때, 하지만 반대로는 오직하나의 레코드만 연관될 수 있을때
다중값필드를 해소하기위한 테이블은 1대다
400

연결 방법

주키와 외래키 이용
일반적으로 다이어그램에 표시할때 왼쪽이 1임

다대다

서로 하나의 레코드가 다른테이블의 여러 레코드와 연관될 수 있을 때
ex) 학생과 수업
400

문제와 해결

레코드끼리 어떻게 쉽게 연관시킬것인가

  • 관계를 적절히 설정 시키지 않을경우 야기되는 문제
    • 정보추출 어려움
    • 중복데이터 다량포함
    • 삽입 갱신 삭제에 어려움
  • 해결
    • 연결테이블로 다대다를 N:1 1:N형식으로 만들 수있음
    • 복합 주키를 구성!
    • 연결테이블은 관계의 성질을 나타내는 이름을 부여
      400400

자기 참조 관계

한 테이블 내에서 레코드 사이에 존재하는것.
이것도 일대일, 일대다, 다대다가있음
300

ex) 회원과 회원을소개해준사람을 같은테이블에 입력할때 발생할 수 있음
200
구조를 주의 깊게 검사하고 추적할 필요가 있다면 새 테이블로 분리
자기참조관계가 정말 유용한지 확인

자기참조관계 새테이블 만드는 경우

  • 1대 다 : 유용한지 확인하고 만드샘300
  • 다대다 : 연결 테이블을 만드는데 이 필드들이 다 같은 부모에서 나옴
    400

관계 식별법

모든 테이블에 대해서 표를 만들어서 식별하면됨
아래 표에 몇대몇인지 적으면됨
구체적 연결이 있는 직접관계만 찾음
왼쪽이 주어(기준) 위쪽이 비교
300

관계 식별을 위한 질문던지기

  • 연결적
    • 걍 단순하고 직관적인 질문임
    • ex) A테이블의 레코드는 B테이블의 하나 이상의 레코드와 연관되는가
    • 이런식으로 관계에 관한질문을 직관적으로 물어보는 것
  • 상황적
    • 소유지향 질문
      • 소유하다, 포함하다, 부분이다.와 같은 단어를 포함함
      • ex) 하나의 주문은 하나의 제품을 포함할 수 있는가
    • 행위 지향 질문
      • 만들다, 방문하다, 놓다, 가르치다, 등 동사를 수반함
      • ex) 한명의 직원이 한명이상의 다른 직원을 관리하는가?

관계 종류 판단 공식

  • 1:1 + 1:1 = 1:1
  • 1:1 + 1:N = 1:N
  • 1:N + 1:N = N:M
    300

테이블 구조 검토

이상적인 테이블 요소

  • 개체 또는 단일 주제를 나타냄
  • 주 키를 가짐
  • 다중 부분 , 다중값 필드를 포함하지 않음
  • 계산된 필드들을 포함하지 않음
  • 불필요한 이중 필드들을 포함하지 않음
  • 최소한의 중복데이터만 포함함

키정제

  • 외래키는 복사된 주키와 같은이름을 가져아함
    • 아니면 확인하기 힘듬
  • 외래키는 주키를 위한 필드명세의 복제를 사용함
    • 명세종류 : replica
    • 부모테이블
    • 원본명세 : 부모 주키의 이름을 지정함
      • 필드이름은 어디테이블에서 ㅇ왔다
    • 설명: 테이블내 외래키의 목적을 설명함
  • 외래키는 주키로부터 값을 도출한다

관계특성 설정

삭제 규칙 정의

고아 레코드를 방지하는데 도움이 됨
부모테이블 관점에서 삭제 규칙을 설정

  • 거부(D) : 부모테이블 레코드를 삭제하지 않고 유지하고 비활성으로 지정
  • 제약(R) : 자식테이블에 연관된 레코드가 있을 시, 부모 레코드를 삭제 하지 않음
  • 연속(C) : 부모레코드를 삭제하고 자식테이블의 모든 연관된 레코드를 지움
  • 널화(N) : 부모레코드를 삭제하고 자식테이블의 연관된 레코드의 외래키 값을 널로 갱신함
  • 기본값 설정(S) : 부모레코드를 삭제하고 자식테이블의 연관된 레코드의 외래키 값을 필드명세의 현재 기본값으로 갱신함
    다이어그램에 그릴시 부모테이블쪽에 삭제규칙 종류를 적음

참여종류 식별(삽입할때)

연관된 테이블에 레코드를 입력하기전에 다른 테이블의 레코드가 반드시 있어야하는지 결정

  • 강제적 : 연관된 테이블에 어떤 레코드를 입력하기전에 현재 테이블에 적어도 하나의 레코드가 반드시 있어야함 ( 수직)
  • 선택적 : 연관된 테이블에 어떤 레코드를 입력하기전에 , 현재 테이블에 어떤 레코드가 있어야할 필요가 없음 (원)
    400
    이거 보면 고객을 넣으면 직원이 반드시 할당되어야하지만
    직원을 넣을때는 고객과 상관이없다

참여 수준

연관된 테이블의 한 레코드와 연관되어야하는 최소 레코드수와 최대레코드 수를 나타냄
N을 사용하면 무제한
500

사용자 및 관리자와 테이블 관계 점증

점검 목록

  1. 각관계를 올바르게 식별
  2. 각 관계를 올바르게 설정
  3. 각외래키가 외래키의 요소를 따르는가
  4. 각 관계를 위해 적절한 삭제규칙을 설정
  5. 이중 테이블관계의 각 테이블과 자기 참조 관계의 적절한 키 필드들을 위해 올바른 참여의 종류, 수준을 식별했는지 확인

<업무 규칙>

데이터베이스의 특정 측면에 어떤형태의 제약을 부과하는 문장
조직이 데이터를 인식하고 사용하는 방법에 기초하여 만들어짐

같은 업무규칙이 여러 조직에서 사용될 수 있지만 이유는 완전 다를 수 있음

예시

어떤 주어진 주문을 위해서 배송 일자(ship date)는 주문 일자(orderdate)보다 앞설(역주: 더 과거일) 수 없다.

  • 배송일자필드의 값에 범위를 부과
  • 상황적으로 배송일자필드값을 의미있게 만듬

형태

데이터베이스 지향

데이터베이스의 논리적 설계 내에서 설정 할 수 있는 제약 조건을 부과
참여수준(연관됨)이나 위처럼 범위를 제한하는 것들을 말함

어플리케이션 지향

데이터 베이스의 논리적 설계에서 설정할 수 없는 제약 조건을 부과
ex) ‘선호됨(Preferred)’ 상태를 가진 고객은 모든 구매에서 15%의 할인을 받는다.

  • 이유 : 할인율을저장할 필드가없음(계산의 결과임 계산된 필드는 허용되지 않음) , 할인을 결정하기 위한 고객의 상태의 기준이 없음

업무 규칙설정 - db지향만

사용자 및 관리자와 같이 작업

업무 규칙 명세서 항목

  • 명세(statement) : 업무 규칙 자체의 텍스트임. 명확하고 간결해야 하며, 혼동이나 모호성 없이 요구되는 제약 조건을 전달해야만 함.
  • 제약 조건(constraint) : 제약 조건이 어떻게 테이블 또는 필드들에 적용되는지에 대한 간 단한 설명임. 예를 들어, 앞의 예에서 업무 규칙에 의해 부과되는 제약 조건을 위해 다음과 같은 설명을 사용할 수 있음
  • 종류(type) : 규칙이 데이터베이스 지향인지 애플리케이션 지향인지를 나타냄
  • 범주(category) : 규칙이 필드 특유의 것인지 관계 특유의 것인지를 나타냄
  • 테스트(test on) : 어떤 처리(삽입, 삭제, 갱신)가 이 업무 규칙이 부과하는 제약 조건을 테스트할 것인지 나타냄
  • 영향을 받는 구조(structures affected) : 규칙이 영향을 미칠 필드들의 이름이나, 규칙이 영향을 미치는 관계에 포함된 테이블들의 이름을 나타냄
  • 영향을 받는 필드 요소(field elements affected) : 규칙이 영향을 미치는 요소들을 나타냄
  • 영향을 받는 관계 특성(relationship characteristics affected) : 규칙이 영향을 미치는 특성들을 나타냄
  • 처리 사항(action taken) : 필드 명세의 요소들이나 관계 다이어그램에 가한 수정을 나타냄

필드 특유

값의 범위

  1. 테이블을 선택
  2. 각 필드를 어떤 제약조건을 필요로하는지 여부를 파악한다.
  3. 필드를 위해 필요한업무규칙을 정한다.
  4. 적절한 필드명세 요소들을 수정하며 규칙설정
  5. 어떤 처리가 이규칙을 테스트하는지 결정함
    • 이 업무규칙이 어떤 상황의 db수행(삽입삭제등)에서 쓰이는지 결정
  6. 업무 규칙명세서에 기록

관계 특유

참여수준

  1. 관계를 선택함
  2. 관계를 검토하고 이것이 어떤 제약 조건을 필요로 하는지 여부를 파악함
  3. 관계를 위해 필요한 업무 규칙을 정의함
  4. 적절한 관계 특성들을 수정함으로서 규칙을 설정함
  5. 어떤 처리가 이 규칙을 테스트하는지 결정함
  6. 이 규칙을 업무 규칙 명세서에 기록함
    ex) 모든 제조업체는 적어도 하나의 제품을 공급해야만 한다.

검증 테이블

유효값의 집합을 정의하는 제약조건을 부여하는경우 (값범위) 유효함
모든값들을 검증테이블에 저장
데이터 무결성을 구현하기 위해 구체적으로 사용하는 데이터를 저장

  • 일반적으로 두개의 필드로 구성
  • 첫번째는 주키 두번째는 비키
  • 값범위가 특정될때, 검증테이블에 검위를 모두 저장해 두고 해당필드를 쓸때 검증테이블을 이용하도록함