DBMS (Database Management System)
: 어떤 조직에 대한 모든 정보를 가지고 있는 시스템으로, 데이터를 체계적으로 저장, 관리, 운영할 수 있도록 잘 조직화한 것
- 서로 관련된 데이터들의 집합, 데이터에 접근하기 위한 프로그램의 집합 (DB)
- + 데이터와 프로그램을 쉽고 편리하게 사용할 수 있는 환경 ( = DBMS)
( * DBMS는 DB에 정보를 저장하고, 또 이를 검색하기 위한 편리하고 효율적인 환경을 제공)
DBMS 목적
- DBMS 이전에는 파일 시스템을 이용해 데이터를 관리
- 이 경우, 데이터 중복, 비일관성, 고립, 무결성 등의 문제가 발생 !
→ 이러한 문제를 해결하기 위해 DBMS 등장!
DBMS 특징
데이터의 독립성
- 물리적 독립성 : 응용 프로그램이 물리적 스키마(크기 등)에 의존하지 않아서 물리적 스키마가 변동되어도 고칠 필요가 없는 것
- 논리적 독립성 : 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있음
데이터의 무결성
- 데이터의 정확성, 일관성, 유효성이 유지되는 것
- 정확성 : 데이터가 실제로 나타내는 값이 정확하고 올바른지, 중복이나 누락이 없는 상태
- 일관성 : 데이터가 시간이 지나더라도 언제나 일관된 상태를 유지, 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태
- 유효성 : 데이터가 정해진 규칙과 제약 조건에 부합 ex) 나이는 음수일 수 x
- 개체 무결성, 참조 무결성, 도메인 무결성, Null 무결성, 고유 무결성, 키 무결성, 관계 무결성
데이터베이스 무결성 규칙
: 일관성과 신뢰성을 보장하기 위해 존재
1. 개체 무결성(기본 키 제약) : 기본 키에는 null 값이 올 수 없고, 기본키는 고유함.
2. 참조 무결성(외래 키 제약) : 외래 키 값은 null이거나, 참조 릴레이션의 기본키 값과 동일해야 함.
( 관계형 데이터베이스에서 두 테이블 간의 관계를 유지하고 보증하는 것을 의미 )
3. 도메인 무결성 : 올바른 데이터가 입력되었는지 확인하는 조건
- Null 무결성 : 테이블의 특정 속성 값이 Null 값이 될 수 없도록 하는 조건
- 고유 무결성 : 테이블의 특정 속성에 대해 각 레코드들이 갖는 값이 서로 달라야 하는 조건
- 키 무결성 : 하나의 테이블에는 적어도 하나의 키가 존재해야 하는 조건
- 관계 무결성 : 레코드 삽입 가능 여부, 테이블 간 레코드 관계에 대한 적절성 여부를 지정하는 조건
장점
스키마를 정의 시 일관성 조건을 명시하면, 데이터베이스가 갱신될 때 DBMS가 자동적으로 일관성 조건을 검사하므로
응용 프로그램들은 일관성 조건을 검사할 필요가 없음 (잘못된 데이터의 삽입, 갱신, 삭제를 방지하여 데이터의 높은 신뢰성 유지)
단점
프로그래밍 복잡도가 증가하고, 무결성 제약조건 간 충돌이 발생할 수 있음
데이터의 보안성
- 인가된 사용자들만 데이터베이스나 데이터 베이스 자원에 접근할 수 있도록 함
- 계정 관리, 접근 권한 설정 등
데이터의 일관성
- 연관된 정보를 논리적인 구조로 관리
- 데이터 변경시 발생할 수 있는 데이터의 불일치성 해결
데이터 중복 최소화
- 데이터를 통합해서 관리
- 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결
데이터의 관점
physical level
: record를 물리적 저장장치에 어떻게 저장할 것인지.
logical level
: 데이터들의 논리적 관계, 즉 record가 어떻게 구성되는지 기술함.
- 스키마 - 데이터베이스의 논리적 구조 (물리적 스키마/논리적 스키마) ≈ 변수
- 인스턴스 - 데이터베이스의 실제 내용물 ≈ 변수에 저장된 값
view level
: 응용 프로그램에서 데이터의 일부를 보안상의 목적으로 숨길 수 있음.
DB 언어
- DDL (데이터 정의 언어): 데이터베이스 스키마를 정의
- DML (데이터 조작 언어): 데이터베이스 질의 및 갱신에 사용
DB 설계
논리적 설계
: 데이터베이스 구조를 결정하는 과정으로 설계자는 좋은 관계형 스키마들의 집합을 찾아야 한다.
- 비즈니스 관점: 데이터베이스에 어떤 속성들이 저장되어야 하는가?
- 컴퓨터과학 관점: 어떤 관계형 스키마에 어떤 속성들이 저장되어야하며 서로 다른 관계형 스키마들이 어떤 속성으로 연결되어야 하는가!
물리적 설계
: 데이터 베이스의 물리적 구조
DB 성능
- 디스크 I/O를 어떻게 줄이는지에서 시작
- 디스크 헤더의 위치 이동 없이 얼마나 많은 데이터를 한 번에 기록하는지
- 순차 I/O가 랜덤 I/O보다 빠름 (but, 현실은 대부분의 작업이 랜덤 I/O)
- 랜덤 I/O를 순차 I/O로 바꿔서 실행할 수는 없을까? (데이터 베이스 쿼리 튜닝)
'CS > 데이터베이스' 카테고리의 다른 글
식별관계 비식별관계 (0) | 2023.04.17 |
---|---|
Index, View, Transaction (인덱스, 뷰, 트랜잭션) (0) | 2023.04.12 |
Key (후보키, 기본키, 슈퍼키, 대체키, 외래키) (0) | 2023.04.12 |
데이터베이스 정규화(Normalization) (0) | 2023.03.30 |
MySQL 정리 (0) | 2023.02.13 |