반응형

 

도서 '가장 쉬운 데이터베이스 설계 책'을 보고 책 내용과 그 이외의 부족한 부분을 채워가며 공부한 내용입니다.

 


1. 용어 정리

  • 데이터

데이터베이스에 저장된 값들

정적임(수동이나 자동으로 수행되는 프로세스에 의해 바뀌기 전까지 같은 상태를 유지)

 

  • 정보

데이터 중에서, 일을 하거나 분석을 하기위해 특정한 방법을 통해 의미있고 실용적으로 재생성한 것들

Select문의 결과를 정보로 볼 수 있음.

데이터를 몇 가지 방법으로 가공을 해서 의미있는 결과로 바꿔야 정보라 볼 수 있음.

더보기

데이터는 저장하는 것이고 정보는 찾는 것

 

  • Null(널)

없거나 알려지지 않은 값

0 혹은 " "와 같은 하나 이상의 공백 문자열을 가리키지 않음

 

  • Null 값
    • 누락값
      • 사람의 실수로 인해 발생
    • 알려지지 않은 값
      • 필드에 아직 필요한 특정 값이 정의되지 않은 경우

 

  • Null의 단점

(Null * 3) + 4 = Null

Null의 연산결과는 Null


  • 테이블

관계형 데이터 베이스의 데이터는 사용자가 테이블로 인식되는 관계에 저장

각 관계는 튜플(레코드)과 속성(필드)로 구성

Client 테이블 : 필드와 레코드

모든 테이블은 기본 키(Primary Key)라 알려진, 각 레코드에 유일한 값으로 구분되는 적어도 하나 이상의 필드를 포함

ex) ID는 Client 테이블의 기본 키(Primary Key)

 

테이블 종류

  • 데이터 테이블
    • 정보를 만들 때 사용하는 데이터를 저장하는 테이블
  • 룩업 테이블(검증 테이블)
    • 데이터 무결성을 보장할 때 사용하는 데이터를 저장
    • 저장되는 데이터가 거의 변화하지 않기 때문에 정적이라 표현
  • 기반 테이블
    • View를 구성하는 테이블

 

  • 필드(속성)

데이터베이스의 가장 작은 구조

테이블이 가지고 있는 대상의 특성을 표현

실질적으로 저장하는 구조

정보로 추출되고 표현 가능

 

적절하게 설계되지 않은 데이터베이스 필드

  1.  둘 이상의 서로 다른 항목들을 값으로 갖는 다중 구성 필드(복합 필드)
  2.  같은 종류의 값을 여러 번 갖고 있는 다중 값 필드
  3.  연결된 문자값이나 수식의 결과 내용을 갖고있는 계산된 필드

ez)

  1. Seattle, WA 98125(Client City, State, Zip)
  2. John, Sandi(Account Rep)
  3. Full Name(다른 기본 키의 First Name과 Last Name을 합친 경우)
  • 레코드(튜플)

테이블 대상에 대한 유일한 값을 표시

필드 값들의 집합으로 구성(필드값의 존재여부와는 관계 x)

각 레코드는 테이블의 모든 필드들을 포함

각 필드들은 레코드를 통해 고객의 다양한 특징들을 설명

 

  • View(뷰)

데이터베이스의 하나 이상의 테이블에서 여러 필드들을 혼합하여 만든 "가상" 테이블

전형적인 뷰의 예시

뷰가 중요한 이유

  1. 뷰는 동시에 여러 테이블에 있는 데이터에 대한 작업을 수행할 수 있음(이때 각 테이블 사이에 관계를 갖고 연결되어 있어야 함)
  2. 뷰는 사용자가 하나 혹은 여러 테이블에 있는 특정 필드를 보거나 조작하는 것을 방지(보안 측면에서 장점)
  3. 데이터 무결성을 구현하는데 도움. 해당 목적으로 사용하는 View를 검증 뷰라 함.

 

  • Key

테이블에서 매우 특별한 역할을 수행하는 필드

해당 필드의 목적에 따라 키의 종류가 결정

  1. 기본 키(Primary Key)
    • 테이블의 각 레코드들을 식별할 수 있는 하나 혹은 여러 개의 필드로 구성
    • 하나 이상의 필드로 구성된 기본 키는 복합 기본 키라 부름.
    • 기본 키의 은 전체 데이터베이스 중 특정 레코드를 식별
    • 기본 키의 필드는 전체 데이터베이스 중 특정 테이블을 식별
  2. 외래 키(Foreign Key)
    • 두 테이블 사이에 관계를 설정할 때 A 테이블의 기본 키를 복사하고 B 테이블의 구조에 포함 시킴으로써 관계를 설정
    • B 테이블 입장에서 해당 테이블에 포함된 A 테이블의 기본 키는 외래 키가 됨.

 

  • 인덱스

RDBMS의 데이터 처리 속도를 향상시키기 위한 구조

인덱스가 논리적인 데이터베이스 구조상 절대적으로 필요한 것은 아님

테이블의 레코드를 식별할 때 사용하는 논리적인 구조 = Key

데이터의 처리 속도를 최적화할 때 사용하는 물리적 구조 = 인덱스

 


  • 관계

두 테이블 사이에 몇가지 방법을 통해 연관을 지을 수 있을 때 관계는 두 테이블 사이에 존재

외래 키와 기본 키의 집합을 통해 관계를 설정

 

특징

  1. 다중 테이블 뷰를 만들 수 있도록 함
  2. 불필요한 데이터를 줄이고, 중복 데이터를 제거함으로써 데이터 무결성을 보장

 

  • 관계의 유형(A 테이블 = 첫번째 테이블, B 테이블 = 두번째 테이블)
    • 1 대 1 관계
      • A 테이블의 한 개의 레코드와 B 테이블의 한개의 레코드에만 연결되어 있고 반대의 경우에도 서로 한개의 레코드에만 연결되어 있을 경우
      • A 테이블을 부모, B 테이블을 자식
      • 부모 테이블의 기본 키를 자식 테이블의 외래 키로 넣어 해당 관계를 만듦.
    • 1 대 다 관계
      • A 테이블에 있는 한 개의 레코드가 B테이블에 있는 여러 레코드와 연결되지만, B 테이블에 있는 한 개의 레코드는 A 테이블에 있는 오직 한 개의 레코드에만 연결할 수 있을 때 성립하는 관계
      • 가장 일반적인 데이터베이스에서 테이블 사이에서 존해하는 관계
    • 다 대 다 관계
      • A 테이블에 있는 한 개의 레코드가 B테이블에 있는 다수의 레코드와 연결되고, B 테이블도 A테이블의 다수의 레코드들과 연결될 수 있는 관계
      • 연결 테이블을 통해 설정

연결 테이블을 사용해 다대다 관계를 해결한 예시

참여의 유형

  • 필수적
    • 테이블 B에 레코드를 넣기 전에 테이블 A에 있는 적어도 하나의 레코드를 넣어햐 한다면 테이블 A의 참여는 필수적
    • Client 테이블에 Agent 테이블의 AgentID값을 무조건 Client 테이블에 넣어야 함으로 Agent 테이블의 참여는 필수적(client 마다 agent를 한명씩 붙인다고 가정)
  • 선택적
    • 테이블 B에 레코드를 넣기 전에 테이블 A에 있는 어떤 레코드도 넣을 필요가 없다면 테이블 A의 참여는 선택적
    • Client 테이블에 Agent가 붙을 필요가 없으므로 Agent 테이블의 참여는 필수적(client에 붙는 agent가 없다 가정)

참여의 정도

  • 특정 테이블이 관련된 테이블에 있는 한개의 레코드와 연결되어야 하는 최소한의 레코드 개수와 최대 레코드 개수
  • ex) 1, 10 = A 테이블에 있는 한개의 레코드가 테이블 B에 있는 레코드 중 적어도 1개 많게는 10개의 레코드와 연결

  • 필드 명세(도메인)

필드의 모든 요소 표시

필드의 일반적인, 물리적인, 논리적인 유형의 요소들을 모두 포함

  1. 일반적인 요소 : 필드와 관련된 가장 기본적인 정보(필드 이름, 상세 설명, 부모테이블)
  2. 물리적인 요소 : 필드를 구성하는 방법과 이 필드를 사용하는 사람들에게 표시하는 방법(데이터 유형, 길이..)
  3. 논리적인 요소 : 필드에 저장되는 값(요청값, 값의 범위, 기본값에 대한 항목)

 

  • 데이터 무결성

데이터베이스에 있는 데이터의 유효성, 일관성, 정확성과 관련

 

데이터 무결성의 4유형

  1. 테이블 수준 무결성(엔티티 무결성)
    • 테이블 내에 중복된 레코드가 없으며, 테이블 내의 각 레코드를 식별하는 필드가 유일한 값을 갖고, Null이 아니라는 것을 보장
  2. 필드 수준 무결성(도메인 무결성)
    • 모든 필드의 구조가 잘 되었음을 보장
    • 각 필더에 있는 값의 유효성, 일관성, 정확성이 확보되었는지와 같은 유형의 필드들이 데이터베이스 내에서 일관성 있게 정의되었는지를 확인
  3. 관계 수준 무결성(참조 무결성)
    • 테이블 사이의 관계의 적절성과 테이블에 있는 레코드들이 데이터가 다른 테이블에서 입력되거나 수정되가나 삭제될 때마다 동기화 여부를 보장
  4. 업무 규칙
    • 조직이 데이터를 인지하고 사용하는 방법에 따라 데이터베이스의 특정 측면에 제약
    • 필드에 저장되는 값의 종류와 범위, 관계에 있는 각 테이블의 참여의 정도와 종류, 특정 관계에 있는 관계 수준 무결성을 위해 사용되는 동기화의 종류와 같은 데이터베이스 설계 측면에 영향

 

 


참고 자료

1. 마이클 J. 헤르난데즈, DATABASE DESIGN FOR MERE MORTALS, THIRD EDITION(출판지 : Pearson Education, 2013)

반응형

'데이터 베이스' 카테고리의 다른 글

데이터베이스 기본기능  (0) 2022.05.19
관계형 데이터 베이스 5  (0) 2022.05.17
관계형 데이터 베이스 4  (0) 2022.05.17
관계형 데이터 베이스 3  (0) 2022.05.16
관계형 데이터 베이스 1  (0) 2022.05.15

+ Recent posts