DB_1 데이터베이스 입문

백소현·2025년 5월 13일

DB

목록 보기
5/5
post-thumbnail

1. 데이터베이스 개론

DataBase

  • 전자적(컴퓨터에 저장)으로 저장되고 사용되는 관련있는 데이터(같은 목적,같은 서비스 등)들의 조직화(불필요한 데이터의 중복 막고 체계적으로 정리하여 빠르게 찾을 수 있도록)된 집합

DBMS

  • database management systems
  • 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템
  • PostgreSQL
  • MySQL
  • Oracle Database
  • Microsoft SQL Server
  • DB를 정의하다 보면 부가적인 데이터가 발생 → MetaData

MetaData

  • database를 정의하거나 기술하는(descriptive) data
  • = catalog
  • 데이터 유형, 구조, 제약 조건, 보안, 저장, 인덱스, 사용자 그룹 등
  • metadata 또한 DBMS를 통해 저장/관리됨

Database system

  • database + DBMS + 연관된 applications
  • = database

Data Models

  • DB의 구조를 기술하는데 사용될 수 있는 개념들이 모인 집합
  • DB 구조(데이터 유형, 데이터 관계, 제약 사항 등)를 추상화해서 표현할 수 있는 수단을 제공
  • data model은 여러 종류가 있으며 추상화 수준과 DB 구조화 방식이 조금씩 다름
  • DB에서 읽고 쓰기 위한 기본적인 동작들도 포함한다
  • Data models 분류
    • conceptual (or high-level) data models → 일반 사용자들이 쉽게 이해할 수 있는 개념들로 이루어진 모델 → 추상화 수준이 가장 높음 → 비즈니스 요구 사항을 추상화하여 기술할 때 사용 → ex : entity-relationship model(ER diagram)
    • logical (or representation) data models → 이해하기 어렵지 않으면서 디테일하게 DB 구조화 할 수 있는 개념들을 제공 → 데이터가 컴퓨터에 저장될 때의 구조와 크게 다르지 않게 DB 구조화를 가능하게 함 → 특정 DBMS나 Storage에 종속되지 않는 수준에서 DB를 구조화할 수 있는 모델 → ex : relational data model, object data model, object-relational data model …
    • physical (or low-level) data models → 컴퓨터에 데이터가 어떻게 파일 형태로 저장되는지를 기술할 수 있는 수단을 제공 → data format, data orderings, access path … → access path : 데이터 검색을 빠르게 하기 위한 구조체 (index)

database schema

  • data model을 바탕으로 database의 구조를 기술한 것
  • schema는 database를 설계할 때 정해지며 한 번 정해진 후에는 자주 바뀌지 않음

database state

  • database에 있는 실제 데이터는 꽤 자주 바뀔 수 있음
  • 특정 시점에 database에 있는 데이터를 database state 혹은 snapshot이라고 함
  • = database에 있는 현재 instances의 집합

three-schema architecture

  • database system을 구축하는 architecture 중의 하나
  • user application으로 부터 물리적인 database를 분리시키는 목적
  • 세 가지 level이 존재하며 각각의 level 마다 schema가 정의되어 있음
    • external schemas(or user views) at external (or view) level → external views, user view → 특정 유저들이 필요로 하는 데이터만 표현 → 그 외 알려줄 필요가 없는 데이터는 숨김 → logical data model을 통해 표현
    • conceptual schemas at conceptual level → 전체 database에 대한 구조를 기술 → 물리적인 저장 구조에 관한 내용 숨김 → entities, data types, relationships, user operations, constraints에 집중 → logical data model을 통해 기술
    • internal schemas at internal level → data storage, data structure, access path 등 실체가 있는 내용 기술
  • 각 레벨을 독립시켜 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위함
  • 대부분의 DBMS가 three level을 완벽하게 혹은 명사적으로 나누지는 않음
  • 데이터가 존재하는 곳은 internal level

datadase language

  • data definition language (DDL)
    • conceptual schema를 정의하기 위해 사용되는 언어
    • internal schema까지 정의할 수 있는 경우도 있음
  • storage definition language (SDL)
    • internal schema를 정의하는 용도로 사용되는 언어
    • 요즘은 특히 relational DBMS에서는 SDL이 거의 없고 파라미터 등의 설정으로 대체됨
  • view definition language (VDL)
    • external schema를 정의하기 위해 사용되는 언어
    • 대부분의 DBMS에서는 DDL이 VDL 역할까지 수행
  • data manipulation language (DML)
    • database에 있는 data를 활용하기 위한 언어
    • data 추가, 삭제, 수정, 검색 등등의 기능을 제공하는 언어

→ 오늘날의 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재

→ ex : relational database language (SQL)

2. 관계형 데이터베이스

relational data model

  • 주요 개념
domainset of atomic values
domain namedomain 이름
attributedomain이 relaion에서 맡은 역할 이름
tuple각 attribute의 값으로 이루어진 리스트, 일부 값은 NULL 일 수 있음
relationset of tuples
relation namerelation의 이름

relation schema

  • relation의 구조를 나타냄
  • relation 이름과 attributes 리스트로 표기됨 → relation_name(attribute1, attirbute2, …)
  • attributes와 관련된 constraints도 포함

degree of a relation

  • relation schema에서 attributes의 수

relation (or relation state)

  • 실제 데이터, 실제 튜플들의 집합

relation database

  • relational data model에 기반하여 구조화된 database
  • relational database는 여러 개의 relations로 구성됨

relational database schema

  • relation schemas set + integrity constraints set

relation의 특징

  1. relation은 중복된 tuple을 가질 수 없음
  2. relation의 tuple을 식별하기 위해 attribute의 부분 집합을 key로 설정
  3. relation에서 tuple의 순서는 중요하지 않음
  4. 하나의 relation에서 attribute의 이름이 중복되면 안 됨
  5. 하나의 relation에서 attribute의 순서는 중요하지 않음
  6. attribute는 atomic 해야 함 (더 이상 쪼개지지 않도록) → composite or multivalued attribute 허용 안 됨

NULL의 의미

  • 값이 존재하지 않는다
  • 값이 존재하나 아직 그 값이 무엇인지 알지 못한다
  • 해당 사항과 관련이 없다
  • NULL 하나로 많은 의미가 담겨질 수 있음 → 최대한 사용하지 않는 것이 좋음

keys

  1. superkey
    • relation에서 tuples를 unique하게 식별할 수 있는 attributes set
  2. candidate key
    • 어느 한 attribute라도 제거하면 unique하게 tuple을 식별할 수 없는 super key
    • = key, minimal key
  3. primary key
    • relation에서 tuples를 unique하게 식별하기 위해 선택된 candidate key
  4. unuque key
    • primary key가 아닌 candidate keys
    • = alternate key
  5. foreign key
    • 다른 relation의 PK를 참조하는 attributes set

constraints

  • relational database의 relations들이 항상 지켜야 하는 제약 사항
  1. implicit constrains
    • relational data model 자체가 가지는 constraints
    • relation은 중복되는 tuple을 가질 수 없다
    • relation 내에서는 같은 이름의 attribute를 가질 수 없음
  2. schema-based constraints
    • 주로 DDL을 통해 schema에 직접 명시할 수 있는 constraints
    • explicit constraints
      1. domain constraints : attribute의 value는 해당 attribute의 domain에 속한 value여야 한다
      2. key constraints : 서로 다른 tuples는 같은 value의 key를 가질 수 없다
      3. null value constraints : attribute가 NOT NULL로 명시되어 있다면 NULL 값을 가질 수 없음
      4. entity integrity constraint : primary key는 value에 NULL을 가질 수 없음
      5. referential integrity constraint : FK와 PK 도메인이 같아야 하고 PK에 없는 values를 FK가 값으로 가질 수 없음

0개의 댓글