[CS] Key, Join, NoSQL

[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