데이터베이스 = 체계적으로 데이터를 저장하고 관리하는 시스템. DBMS(데이터베이스 관리 시스템)를 통해 데이터에 대한 접근 및 관리가 가능하며, 실시간 접근성과 동시 공유의 특성을 가짐
데이터베이스의 테이블은 서로 연관성을 가지며, 이러한 관계를 1:1, 1:N, N:M 등으로 표현
- N:M 관계의 경우 중간 테이블을 생성
키는 테이블에서 데이터를 식별하거나 데이터 간의 관계를 정의하는데 사용되는 개념
키의 종류 | 설명 |
---|---|
기본키 | 각 행을 유일하게 식별할 수 있는 속성. 유일성과 최소성 필요. |
자연키 | 데이터 내에서 자연스럽게 발생하는 유일 속성을 이용한 기본키. |
인조키 | 시스템에서 생성된 유일성을 가진 값(예: 자동 증가 번호). 기본키로 자주 사용됨. |
외래키 | 다른 테이블의 기본키를 참조하는 속성. 두 테이블 간의 관계를 정립. |
후보키 | 기본키가 될 수 있는 속성들의 집합. 모두 유일성과 최소성을 만족. |
대체키 | 후보키 중 기본키로 선택되지 않은 키들. |
슈퍼키 | 각 행을 유일하게 식별할 수 있는 하나 이상의 속성 집합. 최소성은 만족하지 않을 수 있음. |
ERD는 데이터베이스 설계의 첫걸음으로, 엔티티 간의 관계와 구조를 시각적으로 나타냄. 이를 통해 시스템의 데이터 구조를 명확하게 이해
두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것
- NoSQL (ex MongoDB)의 경우 관계형 데이터베이스에 비해 Join이 성능이 떨어지기 때문에, 여러 테이블을 조인하는 작업이 많을 경우 MongoDB 보다는 관계형 데이터베이스를 사용해야 한다
중첩 루프 조인, 정렬 병합 조인, 해시 조인
중첨 루프 조인
: 중첩된 for문과 유사하게, 첫 번째 테이블의 각 행을 순차적으로 읽으면서, 두 번째 테이블의 행과 조건을 비교해 일치하는 레코드를 찾음, 랜덤 엑세스 비용이 높아 대규모 테이블에서는 비효율적
정렬 병합 조인
: 조인할 필드를 기준으로 각 테이블을 먼저 정렬한 뒤, 조인을 수행. 적절한 인덱스가 없고 대용량 테이블을 조인할 때, 비교 연산자 <,>를 사용하는 조건에서 유용
해시 조인
: ==
조건에서 사용. 두 테이블 중 더 바이트가 작은 테이블을 해시 테이블로 만들어 조인을 수행, 효율적인 메모리 사용을 통한 빠른 조인 성능