DATA ARCHITECTURE

DA 1일차 + 2일차 : 설계 개념과 이해

엠케이로그 2024. 6. 24. 19:34

 

Data Architecture 관련한 내용 1주차 내용 정리 

 

데이터 베이스의 설계란 무엇인가?

— 설계를 공부할 때 일상생활에서 볼 수 있는 것들을 뽑아서 설계해보는 것도 좋은 방법인듯.

예시) 커피 구매 영수증을 통해 entity로 뽑아낼 수 있는 부분은 ?

[상품]

  • 상품번호, 상품명, 상품가격, 옵션, 재고, 물류, 판매여부, 부가세, 스템프 적립여부

→ PK 를 정해보기

→ 고객이 한번 살거냐, 여러번 살거냐 한번 산 고객은 두번 못사나 ?

[개념]

  • 정보와 데이터의 차이

: 데이터는 자체로는 의미가 있을 수도 있겠지만, 주제로 의미가 없다.

데이터 일부만 보고 어떤 정보가 나오는지 알아내지만?

  • 시스템

: input 가해졌을 때, 프로세스가 돌아서 output 이 나오는 것이다.

 

데이터베이스 설계란?

현실 세계를 시스템으로 구축하기 위해 추상화하여 체계적으로 표현한 모델을 설계하는 행위

  • 조직체의 업무 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정
  • 응용시스템과 사용자들이 요구하는 데이터, 데이터 간의 관계를 정의하고 표현하는 과정

[좋은 DB 설계]

  • 시간의 흐름 에 따라 데이터의 모든 측면이 나타나고 ,
  • DB 항목의 중복을 최소화
  • 데이터베이스의 무결성을 제공

→ 중복 최소화와 디비 무결성은 거의 같은 의미

 

[데이터베이스의 특징]

  • 데이터베이스는 데이터의 대규모 저장소
  • 운영 데이터 + 데이터베이스 스키마 (메타 데이터)

[데이터베이스 설계 과정]

  • 요구사항 수집과 분석 (요구사항을 분석하고 그 속성을 채워나가는 과정) >
    개념적 설계 (ER 모델 ) > 논리적 설계 (개념설계를 DB 스키마로 전환) > 물리적 설계 (선정된 dbms 특성을 데이터 모델에 부여 및 성능을 고려한 인덱스 생성) > 보안 설계 (사용자 그룹과 접근 제한) > 데이터 베이스 구축과 튜닝

데이터베이스 설계란?]

현실 세계를 시스템으로 구축하기 위해 추상화하여 체계적으로 표현한 모델을 설계하는 행위

  • 조직체의 업무 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정
  • 응용시스템과 사용자들이 요구하는 데이터, 데이터 간의 관계를 정의하고 표현하는 과정

[좋은 DB 설계]

  • 시간의 흐름 에 따라 데이터의 모든 측면이 나타나고 ,
  • DB 항목의 중복을 최소화
  • 데이터베이스의 무결성을 제공

→ 중복 최소화와 디비 무결성은 거의 같은 의미

[데이터베이스의 특징]

  • 데이터베이스는 데이터의 대규모 저장소
  • 운영 데이터 + 데이터베이스 스키마 (메타 데이터)

[데이터베이스 설계 과정]

  • 요구사항 수집과 분석 (요구사항을 분석하고 그 속성을 채워나가는 과정) >
    개념적 설계 (ER 모델 ) > 논리적 설계 (개념설계를 DB 스키마로 전환) > 물리적 설계 (선정된 dbms 특성을 데이터 모델에 부여 및 성능을 고려한 인덱스 생성) > 보안 설계 (사용자 그룹과 접근 제한) > 데이터 베이스 구축과 튜닝
  • 개념적 데이터베이스 설계와 물리적 데이터베이스 설계로 구분 (개념설계를 하고나서 논리적 설계로 넘어갈 것 !!!!!)
  • 개념적 데이터베이스 설계는 실제로 데이터베이스를 어떻게 구현할 것인가 와는 독립적으로 정보 사용의 모델을 개발하는 과정
  • 물리적 데이터베이스 설계에서는 물리적인 저장 장치와 접근 방식을 다룸
  • 개념적 데이터베이스 설계 과정에서 조직체(실세계)의 엔티티, 관계, 프로세스, 무결성 제약조건 등을 나타내는 추상화 모델을 구축
  • 엔티티 : 서로 구분이 되면서 조직체에서 데이터베이스에 나타내려는 객체(사람, 장소, 사물 등)를 의미
  • 관계 : 두 개 이상의 엔티티들 간의 연관을 나타냄
  • 프로세스 : 관련된 활동을 나타냄
  • 무결성 제약조건 : 데이터의 정확성과 비즈니스 규칙을 의미

오라클의 VARCHAR2 최대사이즈 : 4000바이트

VARCHAR 는 256 바이트가 들어가는데,

4000바이트까지 할라면 ? TEXT 라는게 있는데 오라클에는 TEXT 가 없음.

  1. 요구사항 분석
  • 요구사항에 관한 지식을 기반으로 관련 있는 엔티티들과 이들의 어트리뷰트들이 무엇인가, 엔티티들 간의 관계가 무엇인가 등을 파악함
  • 요구사항을 수집하기 위해서 흔히 기존의 문서를 조사하고, 인터뷰나 설문 조사 등이 시행됨
  • 인터뷰는 요구사항 수집을 위해 가장 흔히 사용됨
  1. 논리적 설계
  • 논리적 스키마를 나타내기 위해 관계 데이터 모델을 사용하는 경우에는, ER 모델로 표현된 개념적 스키마를 관계 데이터베이스 스키마로 !
  • 관계 데이터베이스 스키마를 더 좋은 관계 데이터베이스 스키마로 변환하기 위해서
  • 정규화 과정을 적용
  1. Dbms 선정
  2. 물리적 설계
  • 처리 요구사항들을 만족시키기 위해 저장 구조와 접근 경로 등을 결정
  • 성능 주요 기준 질문
    • 응답 시간: 질의와 갱신이 평균적으로 또는 피크 시간 때 얼마나 오래 걸릴 것인가?
    • 트랜잭션 처리율: 1초당 얼마나 많은 트랜잭션들이 평균적으로 또는 피크 시간 때 처리될 수 있는가?
  1. 트랜잭션 설계
  • 요구사항 수집과 분석 후에 데이터베이스 설계 과정과 별도로 트랜잭션 설계를 진행할 수 있음

[ER 모델]

  • 네모(Box)와 선(Line)으로만 구성되는 단순함
  • 동일한 구조(엔티티)의 관점에서 모든 데이터를 논리적으로 구성
  • 논리적으로 연관된 엔티티(데이터 또는 개체)를 연결하기 위해서 관계(Relation)를 사용
  • ER모델은 엔티티(개체)와 엔티티(개체)간의 관계를 표현하기 위해 ER 표기법을 사용

[ER 모델 구성요소]

  • 엔티티 : 데이터 모델링 관점에서 엔티티는 업무를 구현하는데 필요하고 관리해야 하는 주체, 대상, 행위 등 모든 집합적인 것(Thing)
  • 속성 : 엔티티에서 관리하는 데이터를 도출하여 식별하고 정의
    • 속성은 데이터를 표현하는 가장 작은 단위
    • 속성이 가지는 의미를 통해 엔티티의 특성이나 상태를 확인 (핵심 / 중요 / 행위 엔티티 등 엔티티 종류에 따라 가지는 속성의 종류 및 성격이 다름)
    • 하나의 엔티티는 두개 이상의 속성을 가짐
    • ER 속성 구성

[ER모델 구성]

  • 식별자

엔티티(테이블)의 식별자(Key)

  • 각 레코드를 고유하게 식별할 수 있는 하나 이상의 컬럼들의 모임이라 생각하기
  • 수퍼 키(superkey), 후보 키(candidate key), 기본 키(primary key), 대체 키(alternate key), 외래 키(foreign key)
  • 관계
    • 엔티티 간에 존재하는 업무 규칙을 정의 / 엔티티 간에 어떤 관계가 이루어 질 수 있는지 표현
  • 무결성
    • 데이터 무결성(data integrity) : 데이터의 정확성 또는 유효성을 의미
    • 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적으로 또는 명시적으로 정의함
    • 기본 키와 엔티티 무결성 제약조건(entity integrity constraint)
      • 릴레이션의 기본 키를 구성하는 어떤 어트리뷰트도 널값을 가질 수 없음
      • 대체 키에는 적용되지 않음
      • 사용자는 릴레이션을 생성하는 데이터 정의문에서 어떤 어트리뷰트가 릴레이션의 PK 구성 요소인가를 DBMS에게 알려줌
    • 외래 키와 참조 무결성 제약조건(referential integrity constraint)
      • 참조 무결성 제약조건은 두 릴레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용됨
  • owner 가 바뀌면 같은 이름의 테이블의 b’ 이런 테이블 만들 수도 있긴함. (하지만 좋은 건 x)
  • 컬럼의 순서가 중요하진 않지만 어느정도 맞춰주는게 좋아.

M - MASTER 테이블 설계

T - TRANSACTION 트렌잭션 설계

S -

  • 개념적 데이터베이스 설계와 물리적 데이터베이스 설계로 구분 (개념설계를 하고나서 논리적 설계로 넘어갈 것 !!!!!)
  • 개념적 데이터베이스 설계는 실제로 데이터베이스를 어떻게 구현할 것인가 와는 독립적으로 정보 사용의 모델을 개발하는 과정
  • 물리적 데이터베이스 설계에서는 물리적인 저장 장치와 접근 방식을 다룸
  • 개념적 데이터베이스 설계 과정에서 조직체(실세계)의 엔티티, 관계, 프로세스, 무결성 제약조건 등을 나타내는 추상화 모델을 구축
  • 엔티티 : 서로 구분이 되면서 조직체에서 데이터베이스에 나타내려는 객체(사람, 장소, 사물 등)를 의미
  • 관계 : 두 개 이상의 엔티티들 간의 연관을 나타냄
  • 프로세스 : 관련된 활동을 나타냄
  • 무결성 제약조건 : 데이터의 정확성과 비즈니스 규칙을 의미

오라클의 VARCHAR2 최대사이즈 : 4000바이트

VARCHAR 는 256 바이트가 들어가는데,

4000바이트까지 할라면 ? TEXT 라는게 있는데 오라클에는 TEXT 가 없음.

  1. 요구사항 분석
  • 요구사항에 관한 지식을 기반으로 관련 있는 엔티티들과 이들의 어트리뷰트들이 무엇인가, 엔티티들 간의 관계가 무엇인가 등을 파악함
  • 요구사항을 수집하기 위해서 흔히 기존의 문서를 조사하고, 인터뷰나 설문 조사 등이 시행됨
  • 인터뷰는 요구사항 수집을 위해 가장 흔히 사용됨
  1. 논리적 설계
  • 논리적 스키마를 나타내기 위해 관계 데이터 모델을 사용하는 경우에는, ER 모델로 표현된 개념적 스키마를 관계 데이터베이스 스키마로 !
  • 관계 데이터베이스 스키마를 더 좋은 관계 데이터베이스 스키마로 변환하기 위해서
  • 정규화 과정을 적용
  1. Dbms 선정
  2. 물리적 설계
  • 처리 요구사항들을 만족시키기 위해 저장 구조와 접근 경로 등을 결정
  • 성능 주요 기준 질문
    • 응답 시간: 질의와 갱신이 평균적으로 또는 피크 시간 때 얼마나 오래 걸릴 것인가?
    • 트랜잭션 처리율: 1초당 얼마나 많은 트랜잭션들이 평균적으로 또는 피크 시간 때 처리될 수 있는가?
  1. 트랜잭션 설계
  • 요구사항 수집과 분석 후에 데이터베이스 설계 과정과 별도로 트랜잭션 설계를 진행할 수 있음

[ER 모델]

  • 네모(Box)와 선(Line)으로만 구성되는 단순함
  • 동일한 구조(엔티티)의 관점에서 모든 데이터를 논리적으로 구성
  • 논리적으로 연관된 엔티티(데이터 또는 개체)를 연결하기 위해서 관계(Relation)를 사용
  • ER모델은 엔티티(개체)와 엔티티(개체)간의 관계를 표현하기 위해 ER 표기법을 사용

[ER 모델 구성요소]

  • 엔티티 : 데이터 모델링 관점에서 엔티티는 업무를 구현하는데 필요하고 관리해야 하는 주체, 대상, 행위 등 모든 집합적인 것(Thing)
  • 속성 : 엔티티에서 관리하는 데이터를 도출하여 식별하고 정의
    • 속성은 데이터를 표현하는 가장 작은 단위
    • 속성이 가지는 의미를 통해 엔티티의 특성이나 상태를 확인 (핵심 / 중요 / 행위 엔티티 등 엔티티 종류에 따라 가지는 속성의 종류 및 성격이 다름)
    • 하나의 엔티티는 두개 이상의 속성을 가짐
    • ER 속성 구성

[ER모델 구성]

  • 식별자

엔티티(테이블)의 식별자(Key)

  • 각 레코드를 고유하게 식별할 수 있는 하나 이상의 컬럼들의 모임이라 생각하기
  • 수퍼 키(superkey), 후보 키(candidate key), 기본 키(primary key), 대체 키(alternate key), 외래 키(foreign key)
  • 관계
    • 엔티티 간에 존재하는 업무 규칙을 정의 / 엔티티 간에 어떤 관계가 이루어 질 수 있는지 표현
  • 무결성
    • 데이터 무결성(data integrity) : 데이터의 정확성 또는 유효성을 의미
    • 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적으로 또는 명시적으로 정의함
    • 기본 키와 엔티티 무결성 제약조건(entity integrity constraint)
      • 릴레이션의 기본 키를 구성하는 어떤 어트리뷰트도 널값을 가질 수 없음
      • 대체 키에는 적용되지 않음
      • 사용자는 릴레이션을 생성하는 데이터 정의문에서 어떤 어트리뷰트가 릴레이션의 PK 구성 요소인가를 DBMS에게 알려줌
    • 외래 키와 참조 무결성 제약조건(referential integrity constraint)
      • 참조 무결성 제약조건은 두 릴레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용됨
  • owner 가 바뀌면 같은 이름의 테이블의 b’ 이런 테이블 만들 수도 있긴함. (하지만 좋은 건 x)
  • 컬럼의 순서가 중요하진 않지만 어느정도 맞춰주는게 좋아.

M - MASTER 테이블 설계

T - TRANSACTION 트렌잭션 설계

S - STATISTIC 테이블 설계

 

    #출처
    해당 내용은 LearningSpoons Offline 강의를 통해서 정리되었습니다.