데이터베이스 개념

2025. 6. 13. 18:42·database

정의

데이터베이스

  • 관련있는 데이터의 모임

  • 조직의여러사용자가공유(Shared)하여사용할수있도록 통합(Integrated)해서 저장(Stored)한 운영(Operational) 데이터의집합
    DBMS

  • 데이베이스의 생성과 관리를 담당하는 소프트웨어 패키지
    데이터베이스 시스템

  • 데이터베이스와그를관리하는소프트웨어(DBMS, 응용 프로그램) 모두를 칭하는 용어

    *DBMS 장점 *

    1) 데이터 중복최소화와이로인한데이터불일치최소화
    2) 프로그램-데이터독립성에의한유지보수비용절감
    3) 데이터 처리를보다쉽고효율적으로처리가능
    4) 데이터 무결성(integrity) 유지
    5) 데이터 동시공유가능
    6) 장애 발생시데이터회복가능
    7) 보안 향상
    8) 데이터 처리방법표준화가능

데이터 모델링

현실세계의데이터를컴퓨터세계의데이터베이스로옮기는변환과정

  • 데이터 모델링 단계
    • 개념적 데이터 모델(conceptual data model)
      • 사람이인식하는것과유사하게데이터구조명시
      • 예: 엔티티-관계(ER: Entity-Relationship) 데이터 모델
    • 논리적 데이터 모델(logical data model)
      • 사람이이해하는개념이면서컴퓨터내에서데이터가조직되는 방식과멀리떨어져있지는않음
      • 예: 관계형 모델(relational model) ,객체지향 모델(object oriented model),객체관계 모델(object-relational data model), 네트워크 모델, 계층 모델
    • 물리적 데이터 모델(physical data model)
      • 컴퓨터가인식하는것과가까움
      • 데이터베이스에데이터가어떻게저장되는가를기술

데이터베이스 언어

  • DDL(Data Definition Language, 데이터 정의어)
    • 데이터 구조(스키마)정의, 수정, 삭제
    • 예) SQL // CREATE TABLE, ALTER TABLE, DROP TABLE
  • DML (Data Manipulation Language, 데이터 조작어)
    • 데이터 검색,삽입,삭제,수정
    • 예) SQL // SELECT, INSERT, DELETE, UPDAT

ANSI/SPARC 3단계 아키텍처(구조)

  • 외부(뷰) 단계
    • 일반 사용자나 응용 프로그래머가 접근하는 계층
    • 여러 종류의 사용자들을 위해, 동일한 개념 단계로부터 여러 개의 서로 다른 뷰가 제공될 수 있음
  • 개념(논리) 단계
    • 전체 데이터베이스의 논리적인 구조 정의
    • 개념 스키마는 저장장치에 독립적으로 기술되며, 데이터 간의 관계, 제약 사항, 무결성에대한내용포함
  • 내부(물리) 단계
    • 물리적 저장장치에 데이터베이스가 실제로 저장되는 방법의 표현

데이터 독립성(Data Independence)

하위스키마를변경하더라도상위스키마가영향을받지않는특성

  • 논리적 데이터 독립성(logical data independence) 개념 <-> 외부

  • 물리적 데이터 독립성(physical data independence 개념 <-> 내부

  • 논리적 데이터 독립성(logical data independence)

    • 외부 단계와 개념 단계 사이의 독립성
    • 개념 스키마가 변경되어도 외부 스키마는 영향을 받지 않음. 논리적 구조가 변경되어도 응용프로그램에는 영향이 없도록 하는 개념
    • 응용프로그램에 영향을 미치지 않고, 논리적 데이터 구조를 변경시킬수 있는 능력
  • 물리적 데이터 독립성(physical data independence)

    • 개념 단계와 내부 단계 사이의 독립성
    • 저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원한다.
    • 응용프로그램과 논리적 데이터 구조에 영향을 주지 않고, 물리적 데이터 구조를 변경할 수 있는 능력

관계 데이터 모델

  • 관계 데이터 모델은 릴레이션(테이블)들의 모임으로 표현
  • 릴레이션은 튜플(행)들의 집합으로 표현
  • 튜플은 속성(열, 애트리뷰트, 컬럼)들로 구성

릴레이션의 특성

  • 튜플의 유일성: 동일한 튜플이 두 개 이상 존재하지 않음
    • 릴레이션은 서로 다른 튜플들의 집합
    • 키(key)가 존재함
      • 릴레이션의 키: 각 튜플을 고유하게 식별할 수 있는 하나 이상의 속성들의 모임(슈퍼키, 후보키, 기본키)
  • 한 튜플의 각 속성은 단일값(원자값, atomic value)을 가짐
    • 속성값은 분해 불가능
  • 튜플들의 순서는 중요하지 않음
  • 속성들의 순서는 중요하지 않음
  • 한 속성의 값은 모두 같은 도메인값을 가짐
  • 각 릴레이션은 오직 하나의 레코드 타입만 포함
    • 각 릴레이션에 오직 한 가지 유형의 정보만 저장

데이터 무결성

데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말함

  • 무결성 제약 조건(Integrity Constraints)
    • 데이터베이스 상태가 만족 시켜야 하는 조건
    • 무결성 제약 조건을 만족하는 경우 데이터베이스에 저장된 모든 데이터가 정확한 상태로 저장 될 수 있음을 보장
    • 데이터베이스의 데이터에 어떤 변경(삽입, 삭제, 수정)이 있을 때, DBMS가 자동적으로 무결성 제약 조건을 검사하므로 응용프로그램들은 이러한 제약 조건을 검사할 필요가 없음
      ![[Pasted image 20250312145806.png]]

데이터 무결성: 개체 무결성 제약 조건

  • 슈퍼키(super key)
    • 튜플들을 고유하게 식별하는데 꼭 필요하지 않은 속성들을 포함할 수 있음(1개 이상 존재)
  • 후보키(candidate key)
    • 튜플을 유일하게 식별할 수 있는 속성의 최소 집합 (1개 이상 존재)
  • 기본키(primary key)
    • 여러 후보키 중 1개를 선정하여 대표로 삼는 키

데이터 무결성: 참조 무결성 제약 조건

  • 두 릴레이션의 연관된 튜플들 사이의 일관성을 유지하는데 사용
  • 릴레이션R2의 외래키가 릴레이션R1의 기본키를 참조할 때 참조 무결성 제약 조건은 아래의 두 조건 중 하나가 성립되면 만족됨
    • 외래키의 값은R1의 어떤 튜플의 기본키값과 같다
    • 외래키가 자신을 포함하고 있는 릴레이션의 기본키를 구성하고 있지 않으면 널값을 가진다

개념적설계

  • ER 모델
    • 최종 결과물: ER 다이어그램
      • 개념적 모델링 결과를 표준화된 그림으로 표현
  • ER 다이어그램의 구성 요소
    • 개체 타입(entity)
    • 관계 타입(relation)

ER 다이어그램 표기법(Chen)

ER 모델링과정

INPUT : 요구사항명세서
OUTPUT : ER 다이어그램

  1. 개체 타입들을 식별
  2. 개체 타입들과 관계 타입들에 필요한 속성들을 식별하고, 각 속성이 가질 수 있는 값 들의 집합을 식별
  3. 개체 타입들을 위한 기본키를 식별
  4. 관계 타입들을 식별
  5. 관계 타입에 속성이 필요한 경우라면 속성 식별
  6. 관계가 1:1, 1:n, n:m 중에서 어느 것에 해당하는지 결정
  7. ER 다이어그램 작성
  8. ER 다이어그램이 요구 사항에 부합되는지 검사

개체타입: 강한개체타입

  • 강한 개체타입E에 대해 대응하는 릴레이션R을 생성
  • E에 있던 속성들은 릴레이션R의 속성으로 표시
  • E의 기본키가 릴레이션R의 기본키가 됨
    사원(사원번호(pk), 사원이름)

관계타입: 2항관계, 다대다관계

  • 관계타입R에 대해서 릴레이션R을 생성
  • 참여 개체 타입에 해당하는 릴레이션들의 기본키를 릴레이션R의 속성으로 포함시키고, 이들의 조합이 릴레이션R의 기본키가 됨
  • 관계타입R이 가지고 있는 모든속성들을 릴레이션R에 포함시킴
    고객(고객번호(pk), 고객이름)
    책(책번호(pk), 책이름)
    구매(고객번호(fk), 책번호(fk))

관계타입: 2항관계, 일대다관계

▣ 관계타입R에 대하여 다(n)측의 참여 개체 타입에 대응되는 릴레이션S (예:사원)를 찾음
▣ 관계타입R에 참여하는 1측의 개체 타입에 대응되는 릴레이션T(예:부서)의 기본키(예:부서번호)를릴레이션S (예:사원)의 속성으로 포함 시킴
▣ 관계타입R이 가지고 있는 모든 속성들을 릴레이션S(예:사원)에 포함 시킴
부서(부서번호(pk), 부서이름)
사원(사원번호(pk), 사원이름, 부서번호(fk), 소속일)

관계타입: 2항관계, 일대일관계

  • 관계타입R에대하여, R에참여하는관계타입에대응되는릴레이 션S(예:사원)와T(예:컴퓨터)를찾음
  • S(예:사원)와T(예:컴퓨터) 중에서한릴레이션을임의로선택한다. 만일S(예:사원)를 선택했다면T(예:컴퓨터)의기본키(예:관리번호) 를S(예:사원)의속성으로포함시킴
  • 관계타입R이가지고있는모든속성들을S(예:사원)에해당하는 릴레이션에포함시킴
    사원(사원번호, 사원이름, 컴퓨터번호, 배정일)
    컴퓨터(컴퓨터번호, 제조년도)

사원(사원번호, 사원이름)
컴퓨터(컴퓨터번호, 제조년도, 사원번호(fk), 배정일)

속성: 복합속성

  • 복합속성을구성하는단순속성으로변환한다
    고객(고객아이디(pk), 년, 월, 일)

속성: 다중값속성

  • 각다중값속성에대하여새로운릴레이션R(예:고객연락처)을 생성
  • 다중값속성을릴레이션R(예:고객연락처)에포함시키고, 다중 값속성을속성으로갖는개체타입(혹은관계타입)T(예:고객) 에해당하는릴레이션의기본키를릴레이션R(예:고객연락처) 에속성으로포함시킴
  • 릴레이션의R(예:고객연락처)의기본키 = T(예:고객)의 기본 키+ 다중값속성

고객(고객아이디(pk, 고객명)
고객연락처(고객아이디(fk), 연락처)

약한개체타입, 식별관계타입

  • 약한개체타입에대한릴레이션R을생성, 이때약한개체타입의 속성은릴레이션R의속성으로함
  • 릴레이션R의속성에식별개체타입의기본키A를포함시킨다.
    • 릴레이션R의기본키= A + 약한개체타입의구별자
  • 식별관계타입=> 1 : N 관계타입의변환방법을따름

직원(직원번호(pk), 직원이름, 직책)
부양가족(직원번호(fk), 이름, 관계)

사원(사원번호, 이름, 급여, 직책, 주소, 부서번호(fk), 프로젝트번호(fk))
부양가족(사원번호(fk), 이름, 성별)
부서(부서번호, 이름)
프로젝트(프로젝트 번호, 이름, 예산, 사원번호(fk))
프로젝트위치(프로젝트번호(fk, 위치)
수행(사원번호, 프로젝트번호)

관계스키마에대한좋은설계

  • 관계스키마가 잘 설계되었을 때의 모습
    • 특징
      • 데이터 중복성 최소화, 이에 따른 데이터 불일치성 최소화
      • 데이터 갱신(삽입, 삭제, 수정)시 이상현상 없음
      • 정보의무손실
        => 이러한 목표를 달성하기 위해, 관련된 속성들로만 각 릴레이션이 구성되어야 함

함수적 종속성(FD, Functional Dependency)

  • 함수적 종속성
    • X와 Y를 임의의 속성들의 집합이라고 할 때, X의 값이 Y의 값을 유일하게 결정한다면 “X는 Y를 함수적으로 결정한다 (functionally determines)”라고 함
    • X → Y로 표기하고, “Y는X에함수적으로종속된다”, “X는Y 의결정자(determinant)” 라고 함

제1정규형-> 제2 정규형과정

제2정규형-> 제3정규형과정

제3 정규형-> BCNF

정규화 절차의 핵심

  • 하나의 릴레이션에는 하나의 주제(theme)만이 포함되도록 함
    • 이상현상은 한 릴레이션이 여러 개의 주제가 섞여 발생하는 것으로 볼 수 있음
  • 한 릴레이션에는 그 릴레이션의 키에 의해 결정되는 속성만을 포함 시키도록 함
  • 이상 현상을 최소화

'database' 카테고리의 다른 글

SQL 문법 정리  (0) 2025.06.13
데이터베이스 프로그래밍 과제 / 최신 데이터베이스  (0) 2025.06.11
데이터베이스 성능 향상[Index]  (0) 2025.06.11
Transaction(트랜잭션)  (0) 2025.06.11
PL/SQL (프로시저, 함수, 트리거)  (0) 2025.06.11
'database' 카테고리의 다른 글
  • SQL 문법 정리
  • 데이터베이스 프로그래밍 과제 / 최신 데이터베이스
  • 데이터베이스 성능 향상[Index]
  • Transaction(트랜잭션)
chanhuy
chanhuy
  • chanhuy
    차늬
    chanhuy
  • 전체
    오늘
    어제
    • 분류 전체보기 (34)
      • algorithm (9)
      • Python (2)
      • database (8)
      • csts (3)
      • Operating System (0)
      • 오픈소스SW (1)
      • Git & Github (4)
      • 프로젝트 회고 (3)
      • 정보처리기사 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    COMMIT
    recursion
    index
    greedy
    Git
    algorithm
    Python
    pl/sql
    오픈소스SW
    시간복잡도
    dynamic programming
    backtracking
    Reduction
    프로젝트후기
    D&C
    graph algorithms
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
chanhuy
데이터베이스 개념
상단으로

티스토리툴바