⭐️ 데이터 베이스란 무엇인가
- 특정 조직의 여러 사용자가 '공유'하여 사용할 수 있도록 '통합'해서 '저장'한 '운영'데이터의 집합이다.
- 일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음이다.
- 공유데이터 : 특정 조직의 여러사용자가 소유하고 이용할 수 있어야 한다.
- 통합데이터 : 데이터베이스는 중복을 허용하지 않는다. 따라서 중복을 최소화하고 통제가 가능한 중복만 허용한 데이터이다.
- 저장데이터 :컴퓨터가 접근할 수 있는 매체에 데이터베이스를 저장해야한다.
- 운영데이터 : 조직을 운영하고 조직의 주요 기능을 수행하기 위해 꼭 필요하고 지속적으로 유지해야 한다.
⭐️ 데이터 베이스의 특징
- 실시간 접근성 : 사용자의 데이터 요구에 실시간으로 응답할 수 있어야 한다.
- 계속 변화 : 삽입, 삭제, 수정하여 현재의 정확한 데이터를 유지해야 한다.
- 동시 공유 : 여러 사용자가 동시에 사용할 수 있어야 한다. 동시 공유의 특징을 제공해야 한다.
- 내용 기반 참조 : 데이터 베이스가 저장된 주소나 위치가 아닌 데이터의 내용(값)으로 참조할 수 있다. 서로 다른 위치에 저장되어 있어도 모두 검색할 수 있다.
- 데이터 논리적 독립성 : 응용프로그램과 데이터베이스를 독립정으로 구성시켜 응용프로그램을 수정 하여도 데이터 베이스를 수정하지 않아도 된다.
⭐️ 데이터 베이스의 설계단계
- 요구분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현
- 요구분석 : 필요한 용도를 파악하고 데이터 베이스의 종류, 용도, 처리 형태, 제약조건 등을 수집한다. 이를 기반으로 요구조건 명세를 작성한다.
- 개념적 설계 : 현실을 추상화시킨다. (E-R다이어그램)
- 논리적 설계 : 현실세계에서 발생하는 자료를 컴퓨터가 이해하고 처리할 수 있도록 변환하기 위해서 특정 DBMS가 지원하는 논리적 자료구조로 변환시킨다.(정규화를 실행하고 테이블을 설계한다.)
- 물리적 설계 : 논리적 설계된 데이터를 물리적 저장장치에 저장할 수 있도록 변화한다.(반 정규화를 수행, 테이블, 인덱스, 뷰, 파티션을 생성)
- 데이터 베이스 구현 : 논리적 설계 단계와 물리적 설계 단계에서 도출된 데이터베이스 스키마를 파일로 생성하는 단계이다.
⭐️ 스키마
- 데이터 베이스에 저장되는 데이터 구조와 제약조건을 정의한 것이다.
⭐️ DBMS
- 데이터 베이스를 제어하고 관리하는 통합시스템이다.
- 데이터를 조회, 삽입, 삭제, 수정할 수 있다.
- RDBMS 에는 Oracle, Mysql, MariaDbB 등이 있다.
- 필수기능
- 정의(무엇이든 명시 가능해야 한다)
- 조작(검색, 수정, 삽입, 삭제)이 가능해야 한다.)
- 제어
- CRUD 할 때도 무결성이 유지되어야 한다.
- 보안유지, 권한을 검사해야 한다.
- 데이터 베이스가 동시에 처리하더라도 일정하게 관리되어야 한다.
⭐️ DBMS의 장점과 단점
- 장점
- 데이터 독립성 : 물리적, 논리적 독립성
- 데이터 무결성 : 데이터의 유효성 검사를 통해 데이터 무결성을 구현
- 데이터 보안성
- 데이터 일관성
- 데이터 중복 최소화
- 데이터 공유
- 단점
- 백업과 복구가 어렵다.
- 구축 비용과 유지비, 전문가가 필요하다.
- 대용량 데이터 처리가 어렵다.
⭐️ 데이터 모델링
- 현실세계에 존재하는 데이터를 컴퓨터 세계의 데이터 베이스로 옮기는 과정이다.
⭐️ 메타데이터
-데이터에 대한 데이터
- 바나나를 떠올리면 바나나의 색상, 종류 등이 생각나는데 이런 것을 메타데이터라 한다.
⭐️ 키의 종류
기본키, 외래키, 후보키, 슈퍼키
슈퍼키(유일성)>후보키(최소성)>기본키, 대체키
후보키 : 유일성, 최소성 만족, 기본키가 될 수 있는 후보들(레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키)
대체키 : 후보키가 2개 이상일 때 기본키로 선택되지 않은 키이다.
기본키(Primary Key) PK : 유일성과 최소성을 만족한 키이다.
외래키(Foreign Key) FK : 다른 테이블의 기본키를 참조하는 키(외래키는 중복되어도 된다.)
+) 자연키 : 중복된 값이 들어오는 것을 빼다가 중복된 값을 제외하여 중복되지 않는 것을 뽑다가 나오는 키
+) 인조키 : autoIncreasingNum처럼 인위적으로 생성한 키 (보통 기본키는 인조키로 설정한다)
⭐️ 무결성 제약조건
무결성 : 데이터의 정확성, 일관성, 유효성을 유지하는 것을 말한다.
무결성이 유지되어야 데이터 베이스에 저장된 데이터 값과 그 값에 해당하는 현실 세계의 실제 값이 일치하는지에 대한 신뢰가 생긴다.
- 무결성의 종류
- 개체 무결성 : 기본키로 선택된 필드는 빈 값을 허용하지 않는다.
- 참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값을 유지해야 한다.
- 고유 무결성 : 특정 속성에 대해 고유한 값을 가지도록 주어진 경우 그 속성 값은 모두 고유한 값을 가진다.
- NULL 무결성 : NULL이 나올 수 없는 조건이 있는 경우 그 속성은 NULL 값을 허용하면 안 된다.
- 키 무결성 : 하나의 테이블에는 적어도 하나의 키는 존재해야 한다.
- 무결성 제약조건
- 도메인 제약 조건: 각 속성은 원자값 이어야 한다.
- 키 제약 조건 : 기본키는 중복된 값이 존재해서는 안된다.
- 엔티티 무결성 제약조건 : 릴레이션의 기본 키를 구성하는 속성은 NULL 값을 가질 수 없다.
- 참조 무결성 제약조건 : 두 릴레이션과의 일관성을 유지하기 위해 사용된다.
⭐️ 서브쿼리
하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말한다.(쿼리 안의 쿼리)
장점 : SQL 문안에서 작성하여 코딩 시에 편리하다.
단점 :
- 연산 비용이 비싸다 - 뷰와 비슷하게 가상의 테이블을 만드는 행위여서 연산비용이 증가한다.
- 최적화가 불가능하다 - 제약이나 인덱스가 없어서 옵티마이저가 쿼리에 접근하여 해석할 때 필요 정보를 얻을 수 없다.(성능 문제 발생 가능)
- 쿼리가 복잡해진다.
서브쿼리가 사용 가능한 곳
- SELECT 절
- FROM 절
- WHERE 절
- HAVING 절
- ORDER BY 절
- INSERT 문의 VALUES 절
- UPDATE 문의 SET 절
서브쿼리 성능 문제를 해결하기 위해 고려할 것 :
- 불필요한 조인연산은 하지 않도록 한다.
- 조인 시에 불필요한 테이블에 접근하지 않았는지 확인한다.
+) 조인 시에는 서브쿼리를 활용하여 레코드 수를 줄이면 성능이 더 좋아진다.
⭐️ 정규화란(진행하는 이유)
- 데이터베이스 이상현상을 해결하거나 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정이다.
- 데이터베이스 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스, 이상현상을 제거하면서 데이터 베이스를 올바르게 설계하기 위해서
- 비정규형 릴레이션 → (속성의 도메인이 원자 값으로만 구성되도록 분해)
- 제1 정규형 릴레이션(모든 속성의 도메인이 원자값) → (부분함수 종속 제거)
- 제2 정규형 릴레이션(모든 속성이 기본키에 완전 함수 종속) → (이행적 함수 종속 제거)
- 제3 정규형 릴레이션 (모든 속성이 기본키에 이행적 함수 종속이 아님) → (후보키가 아닌 결정자 제거)
- 보이스/코드 정규화 릴레이션(보든 결정자가 후보키)
보통 제3 정규형이나 보이스/코드 정규형 까지만 정규화를 진행한다.
⭐️ 반 정규화
- 정규화된 데이터베이스에서 성능을 개선하기 위해 사용되는 전략이다
- 데이터 베이스의 비용을 최소화하기 위해 중복을 허용하면 엔터티를 다시 통합하거나 분할하여 정규화 과정을 통해 도출된 DB를 재조정하는 과정이다.
장점: 성능 향상과 관리의 효율성이 증가.
단점: 데이터의 일관성 및 정합성 저항, 유지를 위한 비용이 별도 발생하여 성능이 안 좋아질 수 있다.
- 반정규화 기법
- 테이블 병합 : 1:1, 1:N 병합
- 테이블 분할(파티셔닝) : 수평분할, 수직분할
- 중복테이블 추가 : 집계 테이블 추가, 진행 테이블 추가, 측정 부분만을 포함하는 테이블 추가
- 칼럼 중복화 : 조인 성능 향상을 위한 중복 허용
- 중복관계 추가 : 여러 차례 조인을 거쳐야 할 것을 관계를 추가하여 해결반정규화 기법
⭐️ 이상현상
- 잘못된 데이터베이스의 설계로 중복된 데이터를 저장하여 공간낭비와 데이터 손실등의 문제가 발생할 수 있다.
- 삽입이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
- 갱신이상(수정이상) : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
- 삭제이상 : 튜플 삭제 시에 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
'CS' 카테고리의 다른 글
운영체제, 프로세스와 스레드, 멀티 프로세스와 멀티 스레드 (0) | 2023.02.23 |
---|---|
프로세스와 스레드 (0) | 2023.02.09 |
IP와 TCP/UDP (0) | 2022.12.08 |
댓글