💻
ComputerScience
  • 목차
  • Operating System
    • 운영체제란
    • 프로세스 vs 스레드
    • 프로세스 주소 공간
    • 인터럽트(Interrupt)
    • 시스템 콜(System Call)
    • PCB와 Context Switching
    • IPC(Inter Process Communication)
    • CPU 스케줄링
    • 데드락(DeadLock)
    • Race Condition
    • 세마포어(Semaphore) & 뮤텍스(Mutex)
    • 페이징 & 세그먼테이션
    • 페이지 교체 알고리즘
    • 메모리(Memory)
    • 파일 시스템
  • Network
    • OSI 7 계층
    • TCP 3 way handshake & 4 way handshake
    • TCP/IP 흐름제어 & 혼잡제어
    • UDP
    • 대칭키 & 공개키
    • HTTP & HTTPS
    • TLS/SSL handshake
    • 로드 밸런싱(Load Balancing)
    • Blocking,Non-blocking & Synchronous,Asynchronous @LifesLike
    • Blocking & Non-Blocking I/O
  • Algorithm
    • 거품 정렬(Bubble Sort)
    • 선택 정렬(Selection Sort)
    • 삽입 정렬(Insertion Sort)
    • 퀵 정렬(Quick Sort) @mimwin
    • 병합 정렬(Merge Sort)
    • 힙 정렬(Heap Sort)
    • 기수 정렬(Radix Sort)
    • 계수 정렬(Count Sort)
    • 이분 탐색(Binary Search)
    • 해시 테이블 구현
    • DFS & BFS @sujin-kk
    • 최장 증가 수열(LIS)
    • 최소 공통 조상(LCA)
    • 동적 계획법(Dynamic Programming)
    • 다익스트라(Dijkstra) 알고리즘
    • 비트마스크(BitMask)
  • Database
    • 키(Key) 정리
    • SQL - JOIN
    • SQL Injection
    • SQL vs NoSQL
    • 정규화(Nomalization)
    • 이상(Anomaly)
    • 인덱스(INDEX)
    • 트랜잭션(Transaction)
    • 트랜잭션 격리 수준(Transaction Isolation Level)
    • 저장 프로시저(Stored PROCEDURE)
    • 레디스(Redis) @sujin-kk
  • Java
    • Java 컴파일 과정
    • Call by Value vs Call by Reference
    • String & StringBuffer & StringBuilder
    • 자바 가상 머신(Java Virtual Machine)
    • Casting(업캐스팅 & 다운캐스팅)
    • 오토 박싱 & 오토언박싱
    • Thread 활용
    • 고유 락(Intrinsic Lock)
    • 문자열 클래스
    • Garbage Collection
    • Promotion & Casting
    • Primitive type & Reference type
    • 직렬화(Serialization)
    • Error & Exception
    • Stream API
    • Record
    • Composition
Powered by GitBook
On this page
  • key 란?
  • Key 의 종류
  • 슈퍼키
  • 후보키
  • 기본키
  • 대체키
  • 외래키
  1. Database

키(Key) 정리

Previous다익스트라(Dijkstra) 알고리즘NextSQL - JOIN

Last updated 2 years ago

key 란?

테이블 내 튜플(행) 을 식별하기 위한 단일 속성 혹은 속성들의 집합을 의미한다.

Key 의 종류

유일성: Key 하나로 튜플을 유일하게 식별  
최소성: 꼭 필요한 속성으로만 구성

슈퍼키

  • 유일성을 만족하는 키

  • 어떤 속성끼리 묶던 중복값이 나오지 않고 서로 구별 가능

한 팀에 4명의 팀원이 있다. 한 학생마다 [ 학번, 주민번호, 이름, 나이 ] 에 대한 정보가 있다.

이름과 나이를 합쳐서 4명을 구분할 수 있다면 슈퍼키가 될 수 있다. 학번과 주민번호, 학번과 주민번호와 이름 각각 묶어서도 중복값 없이 구별 가능하다면 슈퍼키로 가능하다.

후보키

  • 유일성과 최소성을 만족하는 키.

  • 기본키가 될 수 있는 후보이기 때문에 후보키라고 불린다.

위에서 말한, 4명을 구분하기 위한 슈퍼키들 중에서 최소한의 속성 개수로 4명을 구분할 수 있어야 후보키가 될 수 있다.

속성 1개의 슈퍼키 : 학번, 주민번호 속성 2개의 슈퍼키 : 이름 + 나이, 학번 + 주민번호 등 --> 최소성 만족 X

결국, 유일성을 만족하는 슈퍼키들 중 최소성을 만족하는 학번과 주민번호만이 후보키에 속한다.

기본키

  • 후보키에서 선택된 키.

  • NULL 값이 들어갈 수 업삳.

  • 기본키로 선택된 속성은 동일한 값이 들어갈 수 없다.

테이블에는 오직 1개의 기본키만 지정할 수 있다.

대체키

  • 후보 키 중에서 기본키로 선택되지 않은 키

후보키 : 학번, 주민번호 기본키로 학번을 지정하면, 대체키는 주민번호가 된다.

학번 기본키가 없어지면, 주민번호가 없어진 기본키를 대체한다.

외래키

  • 어떤 테이블간의 기본키를 참조하는 속성이다.

  • 테이블 간 관계를 나타내기 위해 사용

위 사진은 학번이 외래키이다. 부모 테이블: 학생 테이블, 자식테이블 : 수강테이블

  • 학생테이블은 학번이 기본키이자 참조되는 참조키이다.

  • 수강테이블은 학번이 참조하는 키이자 외래키이다.

참조되는 부모테이블이 먼저 생성된 뒤 데이터를 넣고, 참조하는 자식 테이블이 다음에 생긴다.

부모테이블을 먼저 삭제하는 경우 --> 부모테이블을 참조하는 자식테이블에 외래키 오류 발생 외래키 관계에서 부모테이블을 삭제하려면 자식테이블을 먼저 삭제한 후 가능