[1] Key : 검색, 정렬시 Tuple을 구분할 수 있는 기준이 되는 Attribute
- 후보키 (Candidate Key) : Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합. (기본키로 사용할 수 있는 속성들)
- 유일성 : Key로 하나의 Tuple을 유일하게 식별할 수 있음
- 최소성 : 꼭 필요한 속성으로만 구성
- 기본키 (Primary Key) : 후보키 중 선택한 Main Key
- Null 값을 가질 수 없음
- 중복된 값을 가질 수 없음
- 대체키 (Alternate Key) : 후보키 중 기본키를 제외한 나머지 키 = 보조키
- 슈퍼키 (Super Key) : 유일성은 만족하지만, 최소성은 만족하지 못하는 키
- 외래키 (Foreign Key) : 어떤 테이블(Relation) 간의 기본 키를 참조하는 속성. 테이블들 간의 관계를 나타내기 위해서 사용
[2] Join : 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법
- INNER JOIN : 조인하는 테이블의 ON절의 조건이 일치하는 결과만 출력
- LEFT / RIGHT (OUTER) JOIN : 두 테이블이 합쳐질 때 왼쪽/오른쪽을 기준으로 했느냐에 따라 한쪽의 데이터를 모두 가져옴
- LEFT JOIN은 조인하는 테이블의 순서가 상당히 중요. 어떤 순서로 테이블을 조인하는지에 따라 결과 테이블에 조회되는 행의 개수며 구성 등이 달라질 수 있음
- FULL OUTER JOIN : 합집합 (모든 데이터가 검색)
- UNION : 여러 개의 SELECT 문의 결과를 하나의 테이블이나 결과 집합으로 표현할 때 사용
- 이 때 각각의 SELECT 문으로 선택된 필드의 개수, 타입, 순서는 모두 같아야 함
- UNION ALL : 중복되는 레코드까지 모두 출력
- SELF JOIN : 말 그대로 테이블 자기자신을 조인한 것 (하나의 테이블을 여러번 복사해서 조인)
- CROSS JOIN : 모든 경우의 수를 전부 표현해주는 방식
[3] No SQL (Not Only SQL, 비관계형 DB)
- 특징
- 데이터간의 관계를 정의하지 않음 → JOIN 연산이 불가능함
- 대용량의 데이터를 저장할 수 있음
- 분산형 구조
- 여러 곳의 서버에 데이터를 분산 저장해 특정 서버에 장애가 발생했을 때도 데이터 유실 혹은 서비스 중지가 발생하지 않도록 함
- 고정되지 않은 테이블 스키마
- 유동적인 스키마를 가지고 있음 (데이터를 저장하는 칼럼이 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용됨)
- 장점
- RDBMS에 비해 저렴한 비용으로 분산 및 병렬 처리 가능
- 비정형 데이터 구조 설계로 설계 비용 감소
- 빅데이터 처리에 효과적
- 가변적인 구조로 데이터 저장이 가능
- 데이터 모델의 유연한 변화가 가능
- 단점
- 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능
- 많은 인덱스를 사용하려면 충분한 메모리가 필요 (인덱스 구조가 메모리에 저장)
- 데이터 일관성이 항상 보장되지 않음
'CS > Database' 카테고리의 다른 글
[CS] Redis (1) | 2023.11.01 |
---|---|
[CS] 트랜잭션의 격리 수준 (Transaction Isolation Level) (1) | 2023.11.01 |
[CS] 트랜잭션 (Transaction) (0) | 2023.11.01 |
[CS] 정규화 (1) | 2023.11.01 |
[CS] 이상, 인덱스 (1) | 2023.10.23 |