일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 항해플러스 백엔드 7기
- 스프링 부트와 JPA
- Spring
- 불친절한 SQL 프로그래밍
- 스프링MVC
- Secure Coding
- 스프링입문
- 항해 추천인
- 서블릿
- 인프런
- 항해플러스
- 제네릭
- 불친절한SQL프로그래밍
- java
- Numpy
- Java의정석
- JPA
- Python
- 자바의정석
- 시큐어코딩
- 스프링 핵심원리
- 자바의정석 연습문제
- 항해플러스 회고
- 김영한
- 항해플러스 백엔드
- 자바연습문제
- 항해 추천인코드
- 스프링
- 자바공부
- 이것이자바다
- Today
- Total
Continuous Challenge
[DB] RDBMS 에 대해 알아보자 (차수, 카디널리티, 키, 무결성) 본문
RDBMS (관계형 데이터베이스 관리 시스템)
RDBMS는 데이터를 테이블 형태로 저장하고 각 테이블은 행(row)과 열(column)로 구성되며, 테이블 간의 관계(Relationship)를 정의하여 데이터를 효율적으로 저장하고 검색할 수 있다.
릴레이션 스키마(Relation Schema)와 릴레이션 인스턴스(Relation Instance)
관계형 데이터베이스에서 릴레이션(Relation)은 테이블을 의미.
- Relation Schema : 테이블의 구조
- Relation Instance : 실제 데이터
릴레이션 차수(Degree)와 카디널리티(Cardinality)
- 릴레이션의 차수(Degree, 열의 개수)
릴레이션(테이블)의 속성(Attribute, 컬럼)의 개수를 의미. - 릴레이션의 카디널리티(Cardinality, 행의 개수)
릴레이션(테이블)의 튜플(Tuple, 행)의 개수를 의미.
* 카디널리티 : 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표
키(Key)
관계형 데이터베이스에서 키(Key)는 테이블에서 각 튜플을 고유하게 식별하는 속성 또는 속성들의 집합을 의미.
1. 슈퍼키(Super Key)
튜플(행)을 유일하게 식별할 수 있는 속성(컬럼)들의 집합
한 테이블에서 유일성을 보장하는 속성들의 조합이므로 기본키, 후보키도 슈퍼키에 포함됨
하지만, 불필요한 속성이 포함될 수 있음
2. 후보키(Candidate Key)
슈퍼키 중에서 최소한의 속성만 포함한 키
즉, 불필요한 속성을 제거하여 최소성을 만족하는 키
한 테이블에서 여러 개의 후보키가 존재할 수 있음
하지만, 중복된 값을 허용하지 않으며 NULL 값을 가질 수 없음
3. 기본키(Primary Key, PK)
후보키 중에서 하나를 선정하여 기본키로 설정
테이블에서 각 행을 유일하게 식별하는 키
NULL 값을 허용하지 않으며, 중복될 수 없음
기본키는 한 테이블에 하나만 존재
4. 대리키(서브키, 대체키, Surrogate Key)
데이터베이스 시스템이 자동으로 생성하는 키 (보통 숫자, UUID 사용)
실제 데이터와 관계없는 인위적인 식별자
기존 속성으로 기본키를 만들기 어려울 때 사용
예)
Oracle - SEQUENCE (+ NEXTVAL), IDENTITY(12c 부터 지원)
MySQL - AUTO_INCREMENT
대리키를 사용하는 이유
- 비즈니스 로직과 분리된 고유 식별자 유지
- 한 번 생성되면 변경되지 않아 안정적 - 데이터 삽입 및 조회 성능 향상, 효율적인 인덱싱
- 자동으로 증가하는 숫자형 키를 사용하여 빠른 검색 가능 - 중복 및 복잡한 키 문제 해결
- 단순한 정수형 대리키를 사용하여 관리 용이
5. 외래키(Foreign Key, FK)
다른 테이블의 기본키를 참조하는 키
테이블 간의 관계를 정의하며, 참조 무결성을 보장
외래키가 참조하는 기본키 값이 변경되거나 삭제되면 제약 조건(CASCADE, SET NULL 등)에 따라 동작
무결성 제약조건(Integrity Constraints)
데이터의 정합성과 일관성을 유지하기 위한 제약 조건
1. 도메인 무결성 (Domain Integrity)
각 속성(컬럼)의 값이 특정한 데이터 타입과 제약 조건을 따라야 한다는 규칙
테이블 속성(컬럼)에 허용된 값만 저장되도록 보장함
예) 데이터 타입(ex. VARCHAR, INT, DATE), 값의 범위(ex. CHECK(급여 > 0)), 제약 조건(ex. NOT NULL, DEFAULT, UNIQUE) 등
2. 개체 무결성 (Entity Integrity)
각 행이 고유하게 식별될 수 있도록 기본키(PK)가 NULL이거나 중복되지 않아야 한다는 규칙
모든 테이블에는 기본키(PK)가 반드시 있어야 하며, NULL 값을 가질 수 없음
3. 참조 무결성 (Referential Integrity)
외래키(FK) 제약 조건을 통해 한 테이블의 값이 다른 테이블의 기본키(PK)와 일치해야 한다는 규칙
외래키가 참조하는 기본키 값이 변경되거나 삭제될 경우, 제약 조건을 통해 무결성을 유지
💡 참조 무결성 유지 방법
- CASCADE : 부모 테이블의 데이터가 삭제되면, 자식 테이블의 데이터도 함께 삭제됨
- SET NULL : 부모 테이블의 데이터가 삭제되면, 자식 테이블의 외래키 값을 NULL로 변경
- RESTRICT : 부모 테이블의 데이터가 자식 테이블에서 참조 중이라면 삭제 제한
'DB' 카테고리의 다른 글
트랜잭션이란? 트랜잭션 격리수준으로 동시성과 정합성 사이의 균형 맞추기 (0) | 2025.03.20 |
---|---|
[DB] 두둥...! DBMS 의 등장 (0) | 2025.03.13 |