Database와 DBMS

2024. 11. 11. 03:52·Computer Science/Database
반응형

데이터베이스란?

일정한 규칙이나 규약을 통해 구조화되어 저장되는 데이터 모음.

다양한 형태와 구조로 존재하며 사용자나 애플리케이션이 데이터를 효율적으로 저장하고 검색할 수 있도록 설계되어 있다.

 

  • 데이터 무결성:
    데이터베이스는 데이터의 일관성과 정확성을 유지하는 데 도움을 준다.
  • 데이터 보안:
    사용자 접근 권한을 설정하여 민감한 데이터를 보호할 수 있다.
  • 효율적인 데이터 관리:
    대량의 데이터를 효율적으로 저장하고 검색할 수 있다.
  • 데이터 중복 최소화:
    데이터베이스는 데이터 중복을 줄이고 저장 공간을 절약하는 데 기여한다.

 

 

 

 

주요 설계 개념

엔티티(Entity)

  • 데이터베이스에서 관리해야 할 대상이나 객체를 모델링한 것.
  • DB내에서 하나의 고유하게 식별될 수 있는 속성들을 가짐.
  • 실 세계의 사물, 개념, 사람 등을 나타낼 수 있다.

예) 학생정보시스템에서 '학생', '강의', '교수' 등이 엔티티가 될 수 있다.

 

 

🆙 약한 엔티티 / 강한 엔티티

  • 약한 엔티티(Weak Entity)
    • 독립적으로 존재할 수 없고 다른 강한 엔티티에 의존하는 엔티티.
    • 보통 자체적인 primary key를 갖고있지 않아, 관련된 강한 엔티티의 키를 참조함.
  • 강한 엔티티(Strong Entity)
    • 다른 엔티티에 의존하지 않는 독립적인 엔티티.
    • 자체적인 primary key를 가지고 있음.

예) A가 혼자 존재할 수 없고 B의 존재 여부에 따라 종속적이라면 A는 약한 엔티티, B는 강한 엔티티이다.

학생 / 강의가 강한 엔티티이고, 강의 등록은 약한 엔티티이다.

 

 

릴레이션(Relation)

 

  • 엔티티간의 관계를 의미
  • 관계형 데이터베이스에서 릴레이션은 '테이블' 이라고 한다.
  • NoSQL 데이터베이스에서는 '컬렉션' 이라고 한다.
  • 릴레이션의 유형은 다음과 같다
    • 1:1(일대일) 관계: 하나의 엔티티가 다른 엔티티와 하나의 관계를 가지는 경우
      예) 한 명의 학생이 하나의 학생증을 가짐.
    • 1:N(일대다) 관계: 하나의 엔티티가 여러 엔티티와 관계를 가지는 경우
      예) 한 명의 교수가 여러 과목을 가르침.
    • N:M(다대다) 관계: 여러 엔티티가 여러 엔티티와 관계를 가지는 경우
      예) 여러 학생이 여러 강의를 수강할 수 있음.

 

 

속성(Attribute)

  • 엔티티의 특성을 나타내는 요소이다.
  • 엔티티는 여러 속성을 가질 수 있다.

예) 학생 엔티티에서 '학생ID', '이름', '주소', '전화번호' 등이 속성이다.

 

도메인(Domain)

  • 속성이 가질 수 있는 값의 범위 or 집합.
  • 데이터베이스의 무결성을 유지하는데 중요한 역할을 함.

예) '학생ID' 속성의 도메인은 정수 값이어야 하고, '이메일' 속성의 도메인은 올바른 이메일 형식이어야 합니다

 

 

 

 

주요 구성 요소

테이블(Table)

  • 데이터는 테이블에 저장된다.
  • 테이블은 행(Row)과 열(Column)로 구성된다.
  • 행은 개별 데이터 항목을, 열은 데이터 속성을 나타냅니다.

 

레코드(Record) / 행(Row)

  • 테이블 내의 개별 데이터 항목을 레코드 또는 행이라고 한다.
  • 각 행은 고유한 데이터를 포함합니다.

 

필드(Field) / 열(Column)

  • 테이블 내의 각 열은 데이터의 특정 속성을 나타내며, 필드라고도 한다.
  • 예를 들어, 고객 정보 테이블에서는 "이름", "주소", "전화번호" 등이 필드가 된다.

 

기본 키(Primary Key), 외래 키(Foreign Key)

  • 기본키
    • 각 행을 고유하게 식별하기 위한 고유한 값을 가진 필드이다.
    • 기본 키는 중복될 수 없으며 null 값을 가질 수 없다.
  • 외래키
    • 한 테이블의 필드가 다른 테이블의 기본 키를 참조하는 경우, 이 필드를 외래 키라고 한다.
    • 이는 테이블 간의 관계를 정의하는 데 사용된다.

 

 

 

DBMS(Database Management System)

데이터베이스를 생성, 관리, 운영하는 SW 시스템.

데이터 저장, 검색, 업데이트, 삭제 등을 효율적으로 수행.

데이터의 일관성, 무결성, 보안을 보장.

 

 

DBMS 유형

 

  • 관계형 데이터베이스 관리 시스템(RDBMS):
    • 데이터는 테이블 간의 관계를 기반으로 저장된다.
    • SQL(Structured Query Language)을 사용하여 데이터를 관리한다.
    • 예: MySQL, PostgreSQL, Oracle, Microsoft SQL Server
  • 비관계형 데이터베이스(NoSQL):
    • 다양한 데이터 모델(문서, 그래프, 키-값, 컬럼 지향)을 사용하여 데이터를 저장한다.
    • 대규모 데이터와 높은 확장성을 처리하는 데 적합하다.
    • 예: MongoDB, Cassandra, Redis, Neo4j
  • 객체 지향 데이터베이스(Object-oriented Database):
    • 데이터를 객체로 저장하며, 객체 지향 프로그래밍 언어와의 호환성이 높다.
    • 예: db4o, ObjectDB

 

 

DBMS별 특징

 

  • MySQL: 오픈 소스 RDBMS로, 웹 애플리케이션에서 많이 사용된다.
  • PostgreSQL: 오픈 소스 RDBMS로, ACID 준수와 확장성이 뛰어나다.
  • MongoDB: NoSQL 데이터베이스로, JSON 유사 문서 형식으로 데이터를 저장한다.
  • Oracle Database: 상용 RDBMS로, 대기업에서 많이 사용한다.
  • Microsoft SQL Server: Microsoft에서 개발한 RDBMS로, 다양한 비즈니스 애플리케이션에 사용한다.

 

 

DBMS의 주요 기능

  1. 데이터 정의(DDL, Data Definition Language):
    • 데이터베이스 구조(스키마)를 정의하고 수정하는 명령어들로, 테이블 생성, 수정, 삭제 등을 포함
    • CREATE TABLE, ALTER TABLE, DROP TABLE
  2. 데이터 조작(DML, Data Manipulation Language):
    • 데이터베이스 내의 데이터를 조작하는 명령어들로, 데이터 삽입, 업데이트, 삭제, 검색을 포함
    • SELECT, INSERT, UPDATE, DELETE
  3. 데이터 제어(DCL, Data Control Language):
    • 데이터베이스에 대한 접근 권한을 제어하는 명령어들로, 사용자 권한 부여와 회수를 포함
    • GRANT, REVOKE
  4. 트랜잭션 관리(TCL, Transaction Control Language):
    • 데이터베이스 트랜잭션을 제어하는 명령어들로, 트랜잭션의 시작, 종료, 롤백 등을 포함
    • BEGIN, COMMIT, ROLLBACK

 

 

 

728x90
반응형

'Computer Science > Database' 카테고리의 다른 글

SQL과 NoSQL  (2) 2024.11.24
SQL injection 종류와 방지  (0) 2024.11.23
조인(JOIN) - ANSI SQL, MySQL, Oracle 예  (0) 2024.11.22
트랜잭션(Transaction) & 트랜잭션 격리성  (0) 2024.11.18
키(Key)  (0) 2024.11.11
'Computer Science/Database' 카테고리의 다른 글
  • SQL injection 종류와 방지
  • 조인(JOIN) - ANSI SQL, MySQL, Oracle 예
  • 트랜잭션(Transaction) & 트랜잭션 격리성
  • 키(Key)
settong
settong
    250x250
  • settong
    개 발 자 국
    settong
  • 전체
    오늘
    어제
    • 전체보기 (202)
      • Computer Science (50)
        • Network (7)
        • Operating System (18)
        • Data Structure (9)
        • Database (11)
        • Algorithm (5)
      • Language (17)
        • Java (17)
        • Javascript (0)
        • Python (0)
      • Devops (20)
        • AWS (0)
        • Naver Cloud (16)
        • CICD (3)
        • 웹 서버 관리 (1)
      • Front (0)
        • React (0)
      • Backend (5)
        • Spring (5)
      • 코딩 테스트 정복기 (110)
        • 백준 (51)
        • 프로그래머스 (53)
        • 기타 (6)
      • etc (0)
      • 경제 상식 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    해시
    ncp202
    lcs
    프로그래머스
    Spring Boot
    백트래킹
    백준
    BFS
    분할정복
    ncp
    github actions
    DFS
    다익스트라
    ncp200
    Network
    집합
    다이나믹프로그래밍
    CI/CD
    완전탐색
    벨만포드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
settong
Database와 DBMS
상단으로

티스토리툴바