[포스코x코딩온] 스마트 팩토리 과정 4주차 회고 | 데이터베이스

Dana·2023년 4월 13일
0

데이터베이스

데이터, 정보, 지식

  • DIKW : 데이터(Data)→정보(Information)→지식(Knowledge)→지혜(Wisdom)
  • 데이터 : 개별 데이터 자체로는 의미가 중요하지 않은 객관적인 사실
  • 정보 : 데이터의 가공, 처리와 데이터의 연관 관계 속에서 의미가 도출된 것
  • 지식 : 데이터를 통해 도출된 다양한 정보를 구조화하여 유의미한 정보를 분류하고 개인적인 경험을 결합시켜 고유의 지식으로 내재화한 것
  • 지혜 : 지식의 축적과 아이디어가 결합된 창의적인 산물, 근본 원리에 대한 깊은 이해를 바탕으로 도출되는 창의적 아이디어
  • 예) 데이터 : A마트의 물은 700원이다. B마트의 물은 500원이다. 정보 :B마트의 물이 더 싸다. 지식 : B마트에서 물을 사는것이 더 경제적이다. 지혜: B마트의 다른 상품들도 A마트보다 쌀 것이다.

데이터베이스란?

  • 데이터를 저장하는 구조/자료의 모음
  • 통합된 데이터 (integrated data)
    • 데이터의 중복을 최소화하여 데이터 불일치 현상을 제거
  • 저장된 데이터 (stored data)
    • 문서로 보관된 데이터가 아닌 컴퓨터 저장장치에 저장된 데이터
  • 운영 데이터(operational data)
    • 조직의 목적을 위해 사용되는 데이터
  • 공용 데이터(shared data)
    • 한 사람 또는 한 업무가 아닌 공동으로 사용되는 데이터

데이터베이스 특징

  • 실시간 접근성 (real time accessibility)
  • 계속적인 변화(continuous change)
  • 동시 공유(concurrent sharing)
  • 내용에 따른 참조(reference by content)

파일시스템 vs 데이터베이스

  • 파일시스템 : 데이터를 기록하고 여러 사람이 공유하여 사용 가능
    • 데이터 중복이 생길 수 있다.
    • 데이터 공유에 있어서 제한이 있다.
    • 구현과 유지보수에 시간이 오래 걸린다.
    • 저장공간과 자원이 낭비될 수 있다.
  • 데이터베이스는 파일시스템의 단점을 개선하기 위해 등장했다.
    • 데이터 일치성 증가
    • 데이터 공유 원활
    • 의도치 않은 데이터 중복 없음
    • 데이터 보안 향상

데이터베이스 언어

  • SQL(Structured Query Language) : 관계형 데이터베이스에 정보를 저장, 처리하기 위한 프로그래밍 언어
  • 데이터 정의어 (DDL)
  • 데이터 조작어 (DML)
  • 데이터 제어어 (DCL)

데이터베이스 사용자

  • 일반사용자
  • 응용 프로그래머
  • SQL사용자
  • 데이터베이스 관리자(DBA, Database Administrator)

DBMS(Database Management System)

  • 사용자와 데이터베이스를 연결시켜주는 소프트웨어
  • 데이터 정의(Definition)
  • 데이터 조작(Manipulation)
  • 데이터 추출(Retrieval)
  • 데이터 제어(Control)

SDLC

  • Software Development Life Cycle
  • 제품의 요구사항부터 개발, 검증, 유지보수 및 폐기까지의 전 과정을 프로세스화 해 소프트웨어 개발에 적용한 것
  1. 사전조사
    • 고객의 요구사항 파악
  2. 시스템 분석
    • 사용자 요구 수집
    • 인터뷰
    • 시스템 요구 정리
    • processing modeling : ERD(Entity Relationship Diagram)
  3. 시스템 디자인
    • ERD를 통해 Relation Model로 변환, 데이터베이스 성능 결정
  4. 시스템 구현
  5. 유지보수

데이터 모델링

  • 현실 세계 데이터를 단순화하여 데이터베이스로 표현하기 위한 작업

데이터 모델링 과정

  1. 요구사항 분석
  2. 개념적 데이터 모델 설계
  3. 논리적 데이터 모델 설계
  4. 물리적 데이터 모델 설계

ER Model

  • 개념적 모델링에 사용하는 모델
  • 요구사항으로 부터 얻은 정보를 개체(Entity), 속성(Attribute), 관계(Relation)으로 기술하는 모델
  • 개체 : 단독으로 존재하는 객체
  • 속성 : 개체의 특성을 나타내는 속성
  • 관계 : 개체간 관계

ER Diagram

  • 개체(Entity) : 실생활에서의 대상(객체)
  • 개체 타입(Entity Type) : 공통적인 특성을 공유하는 Entity 집합
    • Entity Type을 ER 다이어그램으로 나타낼 때 직사각형 사용
  • 관계 (Relation) : 개체 사이의 연관성
  • 관계 타입 (Relation Type) : 개체 타입 간의 관계를 정의
    • Relation Type을 ER 다이어그램으로 나타낼 때 마름모 사용
  • 속성(Attribute) : 개체가 갖는 성질
    • Attribute를 ER 다이어그램으로 나타낼 때 타원 사용
    • Entity Type과 실선으로 연결
  • 키 속성(Key Attribute) : 다른 객체들과 중복되지 않는 고유한 값을 갖는 Attribute
    • 밑줄 표시
  • 단일 값 속성(Singled-valued Attribute) : 한 값만 갖는 속성
  • 다중 값 속성(Multi-valued Attribute) : 여러 값을 갖는 속성
    • 이중 타원 사용

실습 - 요구사항으로부터 ER Model 설계하기

ER Model 제약조건

  • 여러 속성의 집합으로 표현된 개체 간 관계를 관계성으로 표현
  1. 카디널리티 제약조건 (Cardinality Constraint)
  2. 참여 제약조건 (Participation Constraint)

카디널리티 제약조건(Cardinality Constraint)

  • 하나의 Entity와 관계를 맺을 수 있는 Entity 개수
  • 1:1 관계 - 하나의 개체가 하나의 개체에 대응
  • 1:N 관계 - 하나의 개체가 여러 개체에 대응
  • N:M 관계 - 하나의 개체가 하나의 개체에 대응

참여 제약조건(Participation Constraint)

  • 관계를 맺는 두 개체 중 한 개체가 다른 하나의 개체에 의존하는지를 표현
  • 부분 참여(Partial Participation) - 선택적으로 참여, 하나의 실선
  • 전체 참여(Total Participation) - 하나 또는 그 이상이 참여, 두 개의 실선

구조적 제약조건(Structual Constraint)

  • 실선 위에 (min, max)값을 표시하여 구체적인 조건을 명시

관계의 종속성

  • 약한 개체(Weak Entity)
    • 다른 개체에 종속적인 개체
    • 다른 개체의 도움 없이는 식별할 수 없음
    • 키 속성이 없다. 대신 부모 개체의 키 속성과 구별자를 이용하여 식별
    • 이중 직사각형으로 표현
    • 약한 개체는 강한 개체에 의존적이기 때문에 참여 제약조건은 전체 참여이다.
    • 강한 개체와 약한 개체 사이는 식별 관계, 이중 마름모로 표현한다.
    • 약한 개체에서 구별자는 점선으로 표시

실습 - 요구사항 분석 보고서 작성하기

  • Product는 상품번호, 상품이름, 가격을 갖고있다.
  • Buyer는 아이디, 이름, 주소(도시, 우편번호), 연락처를 갖고있다.
  • Seller는 아이디, 이름, 연락처를 갖고있다.
  • Seller는 하나의 상품만 등록할 수 있다.
  • Buyer는 여러 상품을 구매할 수 있다.
  • 판매자가 없는 상품은 없다.
  • 상품에는 사은품이 포함된다.
  • 한 상품에는 여러 사은품이 포함될 수 있다.
  • 사은품은 이름을 갖고있다.

실습 - ER Model 설계하기

DBMS

DBMS(Database Management System)

  • 데이터베이스를 관리하기 위해 사용자가 사용하는 소프트웨어 프로그램

RDBMS(Relational Database Management System)

  • 관계형 데이터베이스 시스템
  • MySQL, PostgreSQL, ORACLE, SQL Server, SQLite

NoSQL(Not Only SQL)

  • 관계형이 아닌 데이터베이스
  • mongoDB, redis, neo4j

관계형 데이터베이스

  • 데이터가 테이블 형태로 저장
  • 데이터의 무결성이 보장된다
  • 데이터의 중복이 최소화된다
  • 데이터베이스의 구조 설계가 복잡하며 수정이 어렵다

비관계형 데이터베이스

  • 수평적 확장을 지원하므로 대규모 데이터 저장에 용이하다
  • 정해진 스키마가 없기 때문에 데이터 구조의 수정에 있어 유연하다 (스키마 : 데이터베이스 구조와 제약조건 등을 정의하는 논리적인 구조)
  • 다양한 종류의 데이터를 저장할 수 있다
  • 데이터의 일관성을 유지하는데 어려움이 있다
  1. Document형식 : json 형태로 데이터가 저장된다.
  2. Graph형식
  3. Key-Value형식
  4. Wide-Colunm형식

트랜잭션 (Transaction)

  • 데이터베이스의 상태를 변화시키는 하나의 기능을 수행하기 위한 작업 단위 (여러 쿼리의 연산)
  • 모든 작업들이 성공적으로 수행되어야 트랜잭션 성공
  • 중간에 하나라도 실패하면 트랜잭션 실패
  • Commit (커밋) : 트랜잭션이 성공할 경우 트랜잭션의 작업을 데이터베이스에 반영
  • Rollback (롤백) : 트랜잭션이 실패할 경우 트랜잭션에서 실행된 일련의 연산을 취소하고 이전 상태로 되돌리는 것

ACID

  • 원자성 (Atomicity) : 트랜잭션과 관련된 작업들은 전부 성공하거나 중간에 실패할 경우 롤백되어야 한다.
  • 일관성 (Consistency) : 트랜잭션이 성공적으로 실행되면 언제나 일관성 있는 데이터베이스 상태를 유지해야 한다.
  • 독립성 (Isolation) : 하나의 트랜잭션 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못해야 한다.
  • 지속성 (Durability) : 성공적으로 수행된 트랜잭션은 영원히 반영되어야 한다.

실습 - ACID 예시 들어보기

은행 애플리케이션에서 내 계좌에서 다른 계좌로 돈을 이체하려고 할 때

  • 원자성 : 내 계좌에서 적정 금액이 인출되고, 동일한 금액이 다른 계좌로 입금되면 트랜잭션이 커밋되고 변경내용이 데이터베이스에 반영된다. 실패할 경우 트랜잭션이 롤백되고 변경내용이 반영되지 않는다.
  • 일관성 : 거래가 성공하면 내 계좌의 금액은 이체금액만큼 감소하고 다른 계좌는 동일한 금액만큼 증가한다.
  • 독립성 : 트랜잭션이 동시에 실행될 수 있는 다른 트랜잭션과 분리되어 실행된다.
  • 지속성 : 트랜잭션이 커밋되면 두 계좌에 대한 변경 내용이 영구적으로 저장되고 이후의 시스템 장애 또는 충돌 시에도 유지된다.

0개의 댓글