DA 1일차 + 2일차 : 설계 개념과 이해
Data Architecture 관련한 내용 1주차 내용 정리
데이터 베이스의 설계란 무엇인가?
— 설계를 공부할 때 일상생활에서 볼 수 있는 것들을 뽑아서 설계해보는 것도 좋은 방법인듯.
예시) 커피 구매 영수증을 통해 entity로 뽑아낼 수 있는 부분은 ?
[상품]
- 상품번호, 상품명, 상품가격, 옵션, 재고, 물류, 판매여부, 부가세, 스템프 적립여부
→ PK 를 정해보기
→ 고객이 한번 살거냐, 여러번 살거냐 한번 산 고객은 두번 못사나 ?
[개념]
- 정보와 데이터의 차이
: 데이터는 자체로는 의미가 있을 수도 있겠지만, 주제로 의미가 없다.
데이터 일부만 보고 어떤 정보가 나오는지 알아내지만?
- 시스템
: input 가해졌을 때, 프로세스가 돌아서 output 이 나오는 것이다.
데이터베이스 설계란?
현실 세계를 시스템으로 구축하기 위해 추상화하여 체계적으로 표현한 모델을 설계하는 행위
- 조직체의 업무 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정
- 응용시스템과 사용자들이 요구하는 데이터, 데이터 간의 관계를 정의하고 표현하는 과정
[좋은 DB 설계]
- 시간의 흐름 에 따라 데이터의 모든 측면이 나타나고 ,
- DB 항목의 중복을 최소화
- 데이터베이스의 무결성을 제공
→ 중복 최소화와 디비 무결성은 거의 같은 의미
[데이터베이스의 특징]
- 데이터베이스는 데이터의 대규모 저장소
- 운영 데이터 + 데이터베이스 스키마 (메타 데이터)
[데이터베이스 설계 과정]
- 요구사항 수집과 분석 (요구사항을 분석하고 그 속성을 채워나가는 과정) >
개념적 설계 (ER 모델 ) > 논리적 설계 (개념설계를 DB 스키마로 전환) > 물리적 설계 (선정된 dbms 특성을 데이터 모델에 부여 및 성능을 고려한 인덱스 생성) > 보안 설계 (사용자 그룹과 접근 제한) > 데이터 베이스 구축과 튜닝
데이터베이스 설계란?]
현실 세계를 시스템으로 구축하기 위해 추상화하여 체계적으로 표현한 모델을 설계하는 행위
- 조직체의 업무 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정
- 응용시스템과 사용자들이 요구하는 데이터, 데이터 간의 관계를 정의하고 표현하는 과정
[좋은 DB 설계]
- 시간의 흐름 에 따라 데이터의 모든 측면이 나타나고 ,
- DB 항목의 중복을 최소화
- 데이터베이스의 무결성을 제공
→ 중복 최소화와 디비 무결성은 거의 같은 의미
[데이터베이스의 특징]
- 데이터베이스는 데이터의 대규모 저장소
- 운영 데이터 + 데이터베이스 스키마 (메타 데이터)
[데이터베이스 설계 과정]
- 요구사항 수집과 분석 (요구사항을 분석하고 그 속성을 채워나가는 과정) >
개념적 설계 (ER 모델 ) > 논리적 설계 (개념설계를 DB 스키마로 전환) > 물리적 설계 (선정된 dbms 특성을 데이터 모델에 부여 및 성능을 고려한 인덱스 생성) > 보안 설계 (사용자 그룹과 접근 제한) > 데이터 베이스 구축과 튜닝
- 개념적 데이터베이스 설계와 물리적 데이터베이스 설계로 구분 (개념설계를 하고나서 논리적 설계로 넘어갈 것 !!!!!)
- 개념적 데이터베이스 설계는 실제로 데이터베이스를 어떻게 구현할 것인가 와는 독립적으로 정보 사용의 모델을 개발하는 과정
- 물리적 데이터베이스 설계에서는 물리적인 저장 장치와 접근 방식을 다룸
- 개념적 데이터베이스 설계 과정에서 조직체(실세계)의 엔티티, 관계, 프로세스, 무결성 제약조건 등을 나타내는 추상화 모델을 구축
- 엔티티 : 서로 구분이 되면서 조직체에서 데이터베이스에 나타내려는 객체(사람, 장소, 사물 등)를 의미
- 관계 : 두 개 이상의 엔티티들 간의 연관을 나타냄
- 프로세스 : 관련된 활동을 나타냄
- 무결성 제약조건 : 데이터의 정확성과 비즈니스 규칙을 의미
오라클의 VARCHAR2 최대사이즈 : 4000바이트
VARCHAR 는 256 바이트가 들어가는데,
4000바이트까지 할라면 ? TEXT 라는게 있는데 오라클에는 TEXT 가 없음.
- 요구사항 분석
- 요구사항에 관한 지식을 기반으로 관련 있는 엔티티들과 이들의 어트리뷰트들이 무엇인가, 엔티티들 간의 관계가 무엇인가 등을 파악함
- 요구사항을 수집하기 위해서 흔히 기존의 문서를 조사하고, 인터뷰나 설문 조사 등이 시행됨
- 인터뷰는 요구사항 수집을 위해 가장 흔히 사용됨
- 논리적 설계
- 논리적 스키마를 나타내기 위해 관계 데이터 모델을 사용하는 경우에는, ER 모델로 표현된 개념적 스키마를 관계 데이터베이스 스키마로 !
- 관계 데이터베이스 스키마를 더 좋은 관계 데이터베이스 스키마로 변환하기 위해서
- 정규화 과정을 적용
- Dbms 선정
- 물리적 설계
- 처리 요구사항들을 만족시키기 위해 저장 구조와 접근 경로 등을 결정
- 성능 주요 기준 질문
- 응답 시간: 질의와 갱신이 평균적으로 또는 피크 시간 때 얼마나 오래 걸릴 것인가?
- 트랜잭션 처리율: 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 가 없음.
- 요구사항 분석
- 요구사항에 관한 지식을 기반으로 관련 있는 엔티티들과 이들의 어트리뷰트들이 무엇인가, 엔티티들 간의 관계가 무엇인가 등을 파악함
- 요구사항을 수집하기 위해서 흔히 기존의 문서를 조사하고, 인터뷰나 설문 조사 등이 시행됨
- 인터뷰는 요구사항 수집을 위해 가장 흔히 사용됨
- 논리적 설계
- 논리적 스키마를 나타내기 위해 관계 데이터 모델을 사용하는 경우에는, ER 모델로 표현된 개념적 스키마를 관계 데이터베이스 스키마로 !
- 관계 데이터베이스 스키마를 더 좋은 관계 데이터베이스 스키마로 변환하기 위해서
- 정규화 과정을 적용
- Dbms 선정
- 물리적 설계
- 처리 요구사항들을 만족시키기 위해 저장 구조와 접근 경로 등을 결정
- 성능 주요 기준 질문
- 응답 시간: 질의와 갱신이 평균적으로 또는 피크 시간 때 얼마나 오래 걸릴 것인가?
- 트랜잭션 처리율: 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 강의를 통해서 정리되었습니다.