I'm not rock
로그인
I'm not rock
로그인
12월 28일-Key (키)
Yullgiii
·
2023년 12월 28일
팔로우
0
CS
Java
Spring
TIL
0
개발자로의 취업을 준비하며 TIL
목록 보기
104/320
Key (키) 에 대한 설명
기본키(Primary Key)
정의: 기본키는 각 행(레코드)를 유일하게 식별할 수 있는 필드(또는 필드의 조합)이다. 하나의 테이블에는 하나의 기본키만 설정할 수 있으며, 기본키로 설정된 필드에는 중복된 값이나 NULL이 들어갈 수 없다.
기본키 수정 가능성: 기본키 값은 수정할 수 있지만, 다른 레코드와 충돌이 없도록 유일해야 한다. 그러나 기본키를 자주 변경하는 것은 데이터 무결성 관리 측면에서 권장되지 않는다.
후보키(Candidate Key)
정의: 후보키는 테이블에서 각 행을 유일하게 식별할 수 있는 필드(또는 필드 조합) 중에서 기본키로 선택될 수 있는 모든 키이다. 후보키는 중복된 값을 가질 수 없으며 NULL 값을 허용하지 않는다.
슈퍼키(Super Key)
정의: 슈퍼키는 테이블 내의 각 행을 유일하게 식별할 수 있는 필드(또는 필드 조합)이다. 슈퍼키는 후보키보다 넓은 개념으로, 불필요한 추가 정보를 포함할 수 있다.
외래키(Foreign Key)
정의: 외래키는 다른 테이블의 기본키를 참조하는 필드이다. 데이터의 무결성을 유지하는 데 사용되며, 관계형 데이터베이스의 중요한 부분이다.
NULL 허용 여부: 외래키는 NULL 값을 가질 수 있다. NULL이 있는 경우, 외래키는 참조하는 테이블의 기본키와 매칭되지 않아도 된다.
기본키가 없는 테이블
이유 및 사용 사례
기본키의 선택적 사용: MySQL에서 기본키는 테이블을 정의할 때 선택적으로 설정할 수 있다. 기본키를 설정하지 않으면, 테이블 내의 레코드를 고유하게 식별할 수 있는 열이 없다. 이는 유연성을 제공하지만, 데이터의 무결성을 유지하는 데는 한계가 있다.
사용 사례:
일시적인 데이터 저장: 임시적이거나 중복이 허용되는 데이터를 저장하는 경우.
성능 최적화: 중복 검사 오버헤드를 피하기 위해 대량의 데이터 삽입이 필요한 경우.
비정규화: 성능 최적화를 위해 데이터를 비정규화된 형태로 저장하는 경우.
잠재적 문제점
데이터 무결성: 기본키가 없는 테이블은 동일한 데이터의 중복 삽입을 허용하며, 이로 인해 데이터 무결성이 저하될 수 있다.
조인 및 검색 성능: 기본키가 없으면 데이터 검색과 조인 연산에서 성능 저하가 발생할 수 있다.
UNIQUE 제약 조건의 성능 영향
성능 향상
고속 검색: UNIQUE 제약 조건이 있는 칼럼은 대개 인덱스가 함께 생성된다. 이 인덱스를 통해 해당 칼럼에 대한 검색 쿼리의 처리 속도가 향상된다.
데이터 무결성 보장: UNIQUE 제약 조건은 칼럼의 모든 값이 서로 다르다는 것을 보장한다. 이는 데이터 무결성 유지에 중요한 역할을 한다.
오버헤드 발생
데이터 삽입 및 수정 시 검사: 새로운 데이터를 삽입하거나 기존 데이터를 수정할 때, UNIQUE 제약 조건을 충족하는지 검사하는 추가 작업이 필요하다. 이는 특히 대량의 데이터를 다룰 때 성능에 영향을 줄 수 있다.
결론
기본키의 선택: 테이블 설계 시 기본키의 설정 여부는 데이터의 중요성, 무결성, 성능 요구 사항 등을 고려하여 결정해야 한다.
UNIQUE 제약 조건: UNIQUE 제약 조건은 검색 성능을 향상시키지만, 삽입 및 수정 작업에서는 약간의 오버헤드를 발생시킬 수 있다. 따라서 이를 적용할 때는 데이터의 특성과 애플리케이션의 요구 사항을 꼼꼼히 고려해야 한다.
Yullgiii
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢
팔로우
이전 포스트
12월 27일 -프로세스(Process)
다음 포스트
12월 29일 -컨텍스트 스위칭
0개의 댓글
댓글 작성