본문 바로가기

(8)

[Database] - Key

Key Key란? : 검색, 정렬시 Tuple을 구분할 수 있는 기준이 되는 Attribute. 1. Candidate Key (후보키) 릴레이션을 구성하는 속성들 중에서 Tuple을 유일하게 식별할 수 있는 속성들의 부분 집합을 의미한다. (기본키로 사용할 수 있는 속성들을 후보키라 한다) 모든 릴레이션은 반드시 하나 이상의 후보 키를 가져야 한다. 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다. Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합. (기본키로 사용할 수 있는 속성들) 2가지 조건 만족 유일성: Key로 하나의 Tuple을 유일하게 식별할 수 있음 최소성: 꼭 필요한 속성으로만 구성 2. Primary Key (기본키) 후보키 중 선택한 Main Ke..

[Database] - Redis

Redis 보통 데이터베이스는 하드 디스크나 SSD에 저장한다. 하지만 Redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠른 장점이 존재함 캐싱도 가능해 실시간 채팅에 적합하며 세션 공유를 위해 세션 클러스터링에도 활용된다. RAM은 휘발성인데, 껐다키면 다 날아가지 않는가? 이를 막기위한 백업 과정이 존재한다. snapshot: 특정 지점을 설정하고 디스크에 백업 AOF(Append Only File): 명령(쿼리)들을 저장해두고, 서버가 셧다운되면 재실행해서 다시 만들어 놓는 것 데이터 구조는 key/value 값으로 이루어져 있다. (따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템이다) value 5가지 String(text, binary, dat..

Computer Science/DB

[Database] - Key

728x90

Key

Key란? : 검색, 정렬시 Tuple을 구분할 수 있는 기준이 되는 Attribute.

1. Candidate Key (후보키)

  • 릴레이션을 구성하는 속성들 중에서 Tuple을 유일하게 식별할 수 있는 속성들의 부분 집합을 의미한다. (기본키로 사용할 수 있는 속성들을 후보키라 한다)
  • 모든 릴레이션은 반드시 하나 이상의 후보 키를 가져야 한다.
  • 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.

Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합. (기본키로 사용할 수 있는 속성들)

2가지 조건 만족

  • 유일성: Key로 하나의 Tuple을 유일하게 식별할 수 있음
  • 최소성: 꼭 필요한 속성으로만 구성

2. Primary Key (기본키)

후보키 중 선택한 Main Key

특징

  • Null 값을 가질 수 없음
  • 동일한 값이 중복될 수 없음

3. Alternate Key (대체키)

후보키 중 기본키를 제외한 나머지 키 = 보조키

4. Super Key (슈퍼키)

  • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타내지 않는다.
  • 릴레이션을 구성하는 모든 튜플에 대해서 유일성은 만족하지만, 최소성은 만족시키지 못한다.

유일성은 만족하지만, 최소성은 만족하지 못하는 키

5. Foregin Key(외래키)

  • 관계(Relation)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 외래키라고 한다.
  • 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는 데 중요한 도구로 사용된다.
  • 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다 (참조 무결성의 조건)

기타

Null 값?

데이터베이스에서 아직 알려지지 않았거나, 모르는 값으로서 "해당 없음" 등의 이유로 정보 부재를 나타내기 위해 사용하는, 이론적으로 아무것도 없는 특수한 데이터를 뜻한다.

728x90

'Computer Science > DB' 카테고리의 다른 글

[Database] - Injection  (0) 2020.09.25
[Database] - SQL vs NoSQL  (0) 2020.09.25
[Database] - 트랜잭션(Transaction)  (0) 2020.09.25
[Database] - Index(인덱스)  (0) 2020.09.25
[Database] - Redis  (0) 2020.09.25
Computer Science/DB

[Database] - Redis

728x90

Redis

보통 데이터베이스는 하드 디스크나 SSD에 저장한다. 하지만 Redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠른 장점이 존재함 캐싱도 가능해 실시간 채팅에 적합하며 세션 공유를 위해 세션 클러스터링에도 활용된다.

RAM은 휘발성인데, 껐다키면 다 날아가지 않는가?

이를 막기위한 백업 과정이 존재한다.

  • snapshot: 특정 지점을 설정하고 디스크에 백업
  • AOF(Append Only File): 명령(쿼리)들을 저장해두고, 서버가 셧다운되면 재실행해서 다시 만들어 놓는 것

데이터 구조는 key/value 값으로 이루어져 있다. (따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템이다)

value 5가지

  1. String(text, binary, data) - 512MB까지 저장이 가능함
  2. set (String 집합)
  3. sorted set (set을 정렬해둔 상태)
  4. Hash
  5. List (양방향 연결리스트도 가능)
728x90

'Computer Science > DB' 카테고리의 다른 글

[Database] - Injection  (0) 2020.09.25
[Database] - SQL vs NoSQL  (0) 2020.09.25
[Database] - 트랜잭션(Transaction)  (0) 2020.09.25
[Database] - Index(인덱스)  (0) 2020.09.25
[Database] - Key  (0) 2020.09.25