키(key)
키는 데이터베이스에서 튜플을 구분하기 위한 속성 또는 속성의 집합을 의미한다.
- 유일성 : 하나의 키 값으로 튜플을 식별할 수 있는 특성
- 최소성 : 튜플을 식별하는데 필요한 속성만으로 이루어져 있는 특성
💡 DBMS의 다섯가지 키
- 슈퍼 키 : 튜플을 식별할 수 있어 유일성은 만족하지먼, 최소성은 만족하지 않아도 된다.
- 후보 키 : 유일성과 최소성을 만족해야한다.
- 기본 키 : 후보 키 중 메인이 되는 키로 NULL 값을 가지면 안된다.
- 대체 키 : 후보 키 중 기본 키를 제외한 키
- 외래 키 : 다른 테이블의 기본 키를 참조하는 키
무결성
데이터베이스에 저장된 데이터와 실제 데이터가 일치하는 정확성과, 데이터가 일정하게 유지되는 일관성을 의미한다.
- 개체 무결성 : 모든테이블이 기본키를 가져야한다.(기본키는 최소성, 유일성, NULL값 비허용을 만족해야한다.)
- 도메인 무결성 : 테이블의 속성 값은 도메인에 속해야한다.(도메인은 속성이 가질 수 있는 값의 집합)
- 참조 무결성 : 외래 키의 값은 참조하는 테이블의 기본 키 값과 동일하거나 NULL이어야 한다.
인덱스
데이터베이스에서 튜플의 검색 성능을 높이기 위해 속성 값과 튜플이 저장된 주소를 저장하는 것을 말한다.
- 키-값 형태로 '속성 값-튜플 주소'를 인덱스 테이블에 저장한다.
- 장점
인덱스 테이블에 데이터가 정렬되어 있어 검색속도가 빠르다. - 단점
인덱스 테이블을 저장하기 위한 추가 공간이 필요하다.
정렬된 상태를 유지하기 위해 데이터를 추가, 수정, 삭제하는 경우에는 속도가 느리다.
ⓐ 데이터를 추가하면 데이터를 재정렬해야 하므로 오히려 처리 비용이 증가할 수 있다.
ⓑ 데이터를 삭제해도 인덱스테이블에서 데이터가 '사용안함'처리가 되고 실제로 삭제되지않는다.
-> 인덱스 테이블의 크기는 일정한데, 실제로 사용되는 데이터가 적어 성능이 저하될 수 있다.
☝🏻 데이터 양이 방대하며 데이터 변경보다는 검색을 자주하는 경우에 인덱스를 사용하는 것이 좋다.
해시 테이블 인덱스
속성 값으로 해시함수 값을 계산해 인덱싱하는 방법이다.
- 속성 값을 일부가 아닌 온전히 입력할 때만 사용이 가능하다.
- 검색 속도가 빠르긴하지만 자주 사용하지 않는다.
-> '빼빼로'를 검색할 때 '빼로 시작하는 인덱스 찾기'가 불가능 🚫
B+- 트리 인덱스
- B는 Balanced를 의미한다.
- B+ 트리 : 단말 노드에만 데이터를 저장하고 단말 노드 간에는 연결 리스트로 연결한다.
- B- 트리 : 모든 노드에 데이터가 저장된다.
- B+ 트리 인덱스나 B- 트리 인덱스를 사용하면 데이터의 삽입, 갱신, 삭제 등의 작업에 비용을 줄일 수 있다
- 속성을 범위로 검색할 수 있어 '빼로 시작하는 인덱스 찾기'가 가능 ✅
ORM
ORM은 객체와 관계형 데이터베이스를 매핑하는 도구를 의미한다.
- 데이터베이스를 프로그래밍 언어의 객체 관점으로 바라볼 수 있어 객체 지향 프로그래밍 언어를 이용해 프로그램을 개발할 때 편하다.
- SQL문을 사용하지 않고 객체 지향적 코드를 작성할 수 있다.
- 코드의 가독성을 높이고, 개발자 편의성을 증대한다.
- 복잡한 프로젝트에서는 ORM만으로 서비스를 구현하기 어려울 수 있다.
- 하이버네이트, JPA, 장고, 액티브 레코드 등등
'[ STUDY ] > CS' 카테고리의 다른 글
[ 데이터베이스 ] 조인 (1) | 2024.11.16 |
---|---|
[ 데이터베이스 ] 트랜잭션 (0) | 2024.11.16 |
[ 데이터베이스 ] 데이터베이스의 종류 (1) | 2024.11.15 |
[ 컴퓨터 네트워크 ] REST (1) | 2024.11.13 |
[ 컴퓨터 네트워크 ] HTTP, HTTPS (0) | 2024.11.13 |