데이터베이스(DBMS) 한 방에 정리

Songss·2024년 11월 28일

DBMS

목록 보기
1/20

SQL자격증하면서 정말 많이 봤지만
학습한 내용들을 복습하지 않으면 안되니 !
한 방에 정리해보려합니다.

목차

  1. DBMS
  2. RDBMS 외
  3. 데이터베이스 구조 용어
  4. 릴레이션(관계)
  5. 정규화


1. DBMS

DBMS에 대해 알아보기 전에 데이터베이스를 알아합니다.
데이터 베이스 : 데이터를 효율적으로 관리하고 활용할 수 있는 시스템

  • 특징 : 중복 최소화 , 데이터 무결성, 일관성 , 관리 효율성 , 데이터 공유, 백업 복구 , 무결성 유지 , 중앙 집중식 데이터 관리....
    마지막으로 비용 절감 이라고는 하지만 데이터 베이스를 유지하기 위한 인건비, 시스템 비용도 무시할 수 없다고 생각합니다..

그럼 DBMS 란 ?

데이터베이스 관리 시스템으로, 데이터베이스를 생성, 관리, 조작, 제어할 수 있는 소프트웨어입니다. DBMS를 통해 데이터베이스와 사용자 간의 상호작용을 효율적이고 체계적으로 처리할 수 있습니다.

그리고 데이터베이스를 관리하는 DBMS의 소프트웨어 종류는 다양합니다.

  • 관계형 DBMS
  • 비관계형 DBMS
  • 객체 지향 DBMS
  • 분산형 DBMS
  • 기타...

가장 대표적인 DBMS는 관계형 DBMS(RDBMS)이며 물론 그외 DBMS들도 목적과 필요에 따라 필요한 DBMS들이기도 합니다.



2. RDBMS 외

DBMS의 종류

관계형 DBMS (RDBMS)

데이터를 테이블 형식으로 저장. SQL을 사용하여 데이터 관리 및 검색할 수 있습니다.
데이터의 관계를 명확하게 정의해야한다는 특징이 있습니다.

주요 사용 사례 : 기업의 트랜잭션 시스템 <- 은행,회계 등

예: MySQL, PostgreSQL, Oracle DB, MariaDB.

비관계형 DBMS (NoSQL)

비정형 데이터 및 대용량 데이터를 유연한 구조를 가지고 있습니다.
RDBMS보다 확장성이 뛰어나고 , 데이터의 복잡한 관계를 명시적으로 정의하지 않아도 됩니다.
또한 다양한 유형의 데이터를 효율적으로 처리 가능

주요 사용 사례 : 빅데이터 처리(로그데이터) , 실시간 어플리케이션(채팅,SNS) , 문서 기반 데이터 저장(콘텐츠 관련)

예: MongoDB, Cassandra, Redis

객체지향 DBMS

객체 지향 프로그래밍 언어의 개념을 데이터베이스에 적용.
객체의 속성 및 메소드를 데이터베이스에 직접 저장하여 객체 지향 언들과 호환성을 높힙니다.

사용 예시 사례 : SW개발에서 데이터와 객체를 직접 연결하거나, 복잡한 데이터 모델링이 필요한 어플리케이션에서 사용

예: db4o, ObjectDB.

분산 DBMS

여러 네트워크에 분산된 데이터를 관리하여 분산 처리, 확장성을 제공. 분산 시스템에서 데이터의 일관성 및 복구 가능성을 보장합니다.

사용 예시 사례 : 클라우드 서비스 ,대규모 분산 데이터 저장소, 실시간 처리 시스템에서 가용성을 요구할때 ?.... (정확하지는 않습니다)

예: Google Spanner, Apache Cassandra.



3. 데이터베이스 구조 용어

  1. 테이블 : 데이터를 행과 열의 구조로 저장하는 단위 , 데이터베이스에서 기본이 되는 구조
    릴레이션(Relation)이라고도 부릅니다.

  2. 컬럼 : 테이블의 세로 방향 데이터 , 속성(어트리뷰트)를 나타내고 , 컬럼의 다른 이름으로 속성, 이라고도 부릅니다.

  3. 레코드 : 테이블의 가로 방향 데이터, 학생이라는 테이블의 1개의 레코드를 불러오게 되면
    한 학색의 모든 정보(각 속성의 값을 불러옴)를 확인 할 수 있습니다. , 튜플 이라고도 합니다.

  4. 스키마 : 데이터베이스의 구조를 정의 기술한 것으로 테이블, 열, 속성, 타입, 관계 등을 설명해야합니다.

  5. 제약 조건 : 데이터베이스에서 데이트의 무결성이 필수 입니다. 그러기 위해선 규치이 필요합니다.
    NOT NULL: 값이 비어 있을 수 없음.
    UNIQUE: 값이 고유해야 함.
    PRIMARY KEY: 고유성과 NOT NULL을 결합.
    FOREIGN KEY: 다른 테이블의 값을 참조.
    ... 그밖에서 UNIQUE AUTO 등등 다양한 제약조건으로 데이터의 무결성을 보존 할 수 있습니다.

그 외에도 단어가 무수히 많지만.. ERD , index, 트랜잭션 , view, 등등
나머지는 직접 서칭하시는게...



4. 릴레이션(관계)

데이터베이스에서 관계는 테이블 간의 관계를 의미 합니다. 가장 핵심입니다.

릴레이션의 종류

  1. 1:1관계 : 한 테이블의 한 행이 다른 테이블의 정확히 한 행과 연결될 때.
    예시 : 사람(Person)과 여권(Passport):
    한 사람은 하나의 여권만 가질 수 있음.
    한 여권은 한 사람에게만 발급됨.
    즉, 서로가 1:1로 연결됨

  2. 1:N관계 : 한 테이블의 한 행이 다른 테이블의 여러 행과 연결될 때.
    예시 : 고객(Customer)과 주문(Order):
    한 고객은 여러 개의 주문을 할 수 있음.
    한 주문은 한 고객에게만 속함.
    즉 , 한쪽은 1개로 모이고 반대쪽은 여러개로 분산

  3. N:M관계 : 한 테이블의 여러 행이 다른 테이블의 여러 행과 연결될 때.
    예시 : 학생(Student)과 과목(Course):
    한 학생은 여러 과목을 수강할 수 있음.
    한 과목은 여러 학생이 수강할 수 있음.
    즉, 양쪽에서 여러개로 분산하고 있다. 기준이 누구냐에 따라 보이는 값이 달라짐

그래서 중간 테이블(junction Table)을 생성하여 두 테이블 간의 관례를 분리해야함



5. 정규화

1,2,3차 정규화만 정리해보려고 합니다.

1차 정규화 : 반복 그룹 제거

  • 테이블 하나의 속성은 원자값만 가짐 , 즉 1개의 속성에는 1개의 값만 있어야한다.
  • 예시 : 취미라는 속성에 축구,영화,맛집구경 ... 여러 개 때려 넣으면 안됩니다.

2차 정규화 : 부분 종속 제거

  • PK가 아닌 일반 속성은 PK에 종속 되어야 한다.
  • 예시 : 1개의 테이블에 학번,이름,과목명,과목코드 속성이 같이 있다면
    학생 관련 , 과목 관련 테이블로 2개를 생성해서 분리해야한다.

3차 정규화 : 이행 종속 제거

  • 일반 속성이 다른 일반 속성에 종속 되면 안된다.
  • 예시 : 1개의 테이블에 고객 , 주문내역 , 상품명 , 상품가격 이 있다고 하면
    상품가격상품명에 종속.
    상품명주문내역에 종속.
    따라서 주문내역 → 상품명 → 상품가격이라는 이행 종속 존재.
    그래서...
    고객 관련,상품 관련한 테이블 2개로 분리하여합니다.


더 중요한건 이론적인 학습보다 실제로 데이터베이스를 구축해보고

SQL문법으로 질의해보는게 가장 빠른 학습입니다.

간단한 질의보다는 테이블을 5개 이상 생성하여 관계를 성립하고

원하는 데이터를 가져오기위해 어떻게 테이블을 만들어야하는지

어떻게 제약조건을 만들어야하는지 ... 경험이 중요합니다..

0개의 댓글