- [DB/쉬운코드] 데이터베이스 (모델/스키마/relation)2024년 05월 02일 17시 12분 20초에 업로드 된 글입니다.작성자: @kimyu0218
데이터베이스
데이터베이스는 전자적으로 (electronically) 저장•사용되는 관련있는 데이터 (related) 들의 조직화된 집합이다. 같은 목적으로 사용되는 데이터들을 조직적으로 관리하여 데이터를 빠르게 검색하고, 불필요한 데이터가 중복으로 저장되는 것을 방지하여 데이터 불일치 문제를 예방한다.
- DBMS : 사용자에게 데이터베이스를 정의/생성/관리하는 기능을 제공하는 소프트웨어 시스템
- ex. PostgreSQL, MySQL, Oracle, MSSQL 등
- 메타데이터 : 데이터베이스를 정의하거나 기술하는 부가적인 데이터
- ex. 데이터 유형, 구조, 제약 사항, 보안, 인덱스, 사용자 그룹 등
- 데이터베이스 시스템 = 데이터베이스 + DBMS + 연관된 어플리케이션
데이터 모델
데이터 모델은 DB 구조*를 추상화할 수 있는 수단을 제공한다. 데이터 모델에는 여러 종류가 존재하는데, 추상화 수준과 DB 구조화 방식에 차이가 있다.
*DB의 구조 : 데이터 유형, 관계, 제약 사항
개념적 데이터 모델은 일반 사용자들도 쉽게 이해할 수 있는 개념으로 이루어진 모델이다. (= high level) 추상화 수준이 가장 높으며 대표적으로 entity-relation model이 있다.
논리적 데이터 모델은 세부적으로 DB를 구조화하지만 특정 DBMS나 스토리지에 종속되지 않는 수준에서 구조화한다. 대표적으로 relational data model, object data model 등이 있다.
물리적 데이터 모델은 데이터가 컴퓨터에 어떻게 파일 형태로 저장되는지를 기술할 수 있는 수단을 제공한다. (= low level)
스키마
데이터베이스 스키마는 데이터 모델을 바탕으로 DB의 구조를 기술한 것을 의미이다. DB를 설계할 때 작성되며 한 번 정해진 후에는 자주 변경되지 않는다.
🚨 데이터 모델은 DB 구조를 모델링할 수 있는 방법을 제공한다.
three-schema architecture는 데이터베이스 시스템을 구축하는 아키텍처 중 하나로, 사용자 프로그램으로부터 물리적인 데이터베이스를 분리시키는 목적으로 사용된다. 즉, 각 레벨을 독립시켜 어느 레벨에서의 변화가 상위 레벨에 영향을 미치지 않게 구현함으로써 데이터베이스 시스템을 안정적으로 운영한다.
외부 스키마 개념 스키마 내부 스키마 external level conceptual level internal level individual user view common user view storage view 논리적 데이터 모델 논리적 데이터 모델 물리적 데이터 모델 - entity, data type, relationship, constraint 등 data storage, data structure, access path 등
관계형 데이터베이스
관계형 데이터베이스는 relational data model에 기반하여 구조화된 데이터베이스로, 여러 개의 relation으로 구성되어 있다. 이를 이해하기 위해서는 relation을 알아야 한다.
relation
수학에서 relation은 카테시안 곱의 부분 집합이다.
💡 Cartesian Product
- `A X B` = set `A`에서 고른 element와 set `B`에서 고른 element의 모든 pair의 조합
- 각각의 pair를 tuple이라고 부른다.
위 수학적 개념을 relational data model로 전환하면 다음과 같다.
relation domain* attribute tuple set of tuples set of atomic values domain이 relation에서 맡은 역할 각 attribute의 값으로 이루어진 리스트 table - column row *domain == 수학에서의 set
💡 relation 스키마
- `relation 이름([attribute 리스트])`로 relation의 구조를 표현한다.
ex. `STUDENT(id, name, grade, major, phone_num)` - attribute와 관련된 constraint도 포함한다.
relation은 다음 특징을 갖는다.- 중복된 tuple을 가질 수 없다. (= set of tuples)
- tuple을 식별하기 위해 attribute의 부분 집합을 key로 설정한다.
- tuple과 attribute의 순서는 중요하지 않다.
- 하나의 relation에서 중복된 attribute 이름을 가질 수 없다.
- attribute는 atomic*해야 한다.
*atomic = (원자적) 더 이상 나누어 질 수 없는
💡 key의 종류
- superkey : relation에서 tuple을 유일하게 식별할 수 있는 (= 유일성) attribute의 집합
- candidate key : minimal (= 최소성) superkey
- primary key (= PK) : relaiton에서 tuple을 식별하기 위해 선택된 candidate key
- alternate key : primary key가 아닌 candidate key
- foreign key (= FK) : 다른 relation의 PK를 참조하는 attribute의 집합
💡 유일성 & 최소성
- 유일성 : 유일한 값을 가져야 한다.
- 최소성 : 최소한의 값으로 tuple을 식별해야 한다.
superkey candidate key primary key alternate key 유일성 O O O O 최소성 X O O O constraint
constraint는 관계형 데이터베이스의 relation이 언제나 지켜야 하는 제약 사항을 의미한다. 제약 사항은 크게 implicit, explicit constraint으로 나뉜다.
implicit constraint는 relational data model 자체가 가지는 제약사항이다.- relation은 중복된 tuple을 가질 수 없다.
- relation 내에서는 중복된 attribute 이름을 가질 수 없다.
반면, explicit constraint는 DDL을 통해 스키마에 직접 명시하는 제약 사항이다.- domain constraint : attribute의 값은 해당 attribute의 domain에 속한 값이어야 한다.
- key constraint : 서로 다른 tuple은 같은 key 값을 가질 수 없다.
- NULL value constraint : attribute가 NOT NULL로 명시된 경우, 값으로 NULL을 가질 수 없다.
- entity integrity constraint : PK는 NULL이 될 수 없다.
- referential integrity constraint : FK는 PK와 domain이 같아야 하고, PK에 없는 값을 가질 수 없다.
💡 무결성; integrity
데이터의 정확성과 일관성을 보장하는 것- 개체 무결성 : primary key를 구성하는 어떤 attribute도 NULL값이나 중복된 값을 가질 수 없다.
- 도메인 무결성 : (= domain constraint) attribute 값은 domain에 속한 값이어야 한다.
- 참조 무결성 : foreign key는 NULL값이거나 참조한 테이블의 primary key 값과 동일해야 한다.
🤔 참조값이 변경되면
foreign key 선언 시 `ON DELETE`, `ON UPDATE` 규칙을 설정할 수 있다.- `CASCADE` : 참조되는 데이터가 변경되면 참조하는 데이터가 삭제된다.
- `SET NULL` : 참조되는 데이터가 변경되면 참조하는 데이터는 NULL로 설정된다.
- `RESTRICT` : 참조되는 데이터가 변경되더라도 참조하는 데이터는 변하지 않는다.
- `SET DEFAULT` : 참조되는 데이터가 변경되면 참조하는 데이터는 기본값으로 설정된다.
참고자료
'학습기록 > CS 공부' 카테고리의 다른 글
[DB/쉬운코드] 트랜잭션과 동시성 제어 (ACID/이상 현상) (0) 2024.05.03 [DB/쉬운코드] stored program (0) 2024.05.02 [OS/공룡책] Part 4. Memory Management (0) 2024.04.30 [OS/공룡책] Part 3. Process Synchronization (1) 2024.04.27 [OS/공룡책] Part 2. Process Management (0) 2024.04.23 다음글이 없습니다.이전글이 없습니다.댓글 - DBMS : 사용자에게 데이터베이스를 정의/생성/관리하는 기능을 제공하는 소프트웨어 시스템