본문 바로가기

CS/Database11

[데이터베이스] 데이터베이스 정규화 (1NF ~ BCNF) 데이터베이스 설계의 핵심! 테이블의 중복을 제거하고, 무결성을 보장하기 위한 과정이 바로 정규화(Normalization)입니다.정규화 1단계부터 5단계까지, 그리고 실무에서 어떻게 쓰이는지 한눈에 정리해보겠습니다.🔧 1. 제1정규형 (1NF): 원자값으로 분해하라!정의: 테이블의 모든 컬럼이 원자값(Atomic Value)을 가져야 한다.즉, 하나의 셀에 여러 개의 값이 들어가면 안 됨!예시 (정규화 전):학번이름수강과목1001홍길동DB, 알고리즘 → 정규화 후:학번이름수강과목1001홍길동DB1001홍길동알고리즘 ✅ 포인트: 반복 컬럼이 있으면 안 됩니다.🔧 2. 제2정규형 (2NF): 부분함수 종속 제거조건:1NF 만족기본키가 복합키일 경우, 일부 키에만 종속된 속성 제거예시 (정규화 전): 학번.. 2025. 5. 24.
[데이터베이스] 키, 슈퍼키, 후보키, 기본키 1️⃣ 슈퍼키(Super Key) – "일단 유일하면 다 슈퍼키"슈퍼키는 테이블의 튜플(레코드)을 유일하게 식별할 수 있는 컬럼(또는 컬럼들의 집합)을 말합니다.즉, 겹치지만 않으면 다 슈퍼키입니다.예를 들어 학생 테이블이 있다고 가정합시다:학번이름생년월일2023001홍길동2000-01-012023002김철수1999-12-31 여기서 유일하게 식별 가능한 조합들:학번학번 + 이름학번 + 생년월일학번 + 이름 + 생년월일이 전부 슈퍼키입니다.즉, 유일성만 만족하면 다 슈퍼키입니다.2️⃣ 후보키(Candidate Key) – "진짜 꼭 필요한 것만 남기자"슈퍼키 중에서 더 이상 뺄 수 없는 최소한의 컬럼 조합, 그게 바로 후보키입니다.즉, 유일성 + 최소성을 만족하는 키죠.위 예시에서:학번 → ✅ 유일 + .. 2025. 5. 24.
[데이터베이스] 트랜잭션 고립 수준 쓰기와 쓰기가 동시에 작업하는 것이 불가능 읽기와 읽기는 동시에 언제든 가능 문제 부분은 쓰기 트랜잭션과 읽기 트랜잭션이 동시에 일어날 때 하나의 트랜잭션은 발생 시점부터 데이터 일관성을 가져야 한다. Read uncommited - 오손 읽기(Dirty read) commit되지않은 데이터를 읽는 문제 Read commited - 반복 불가능 읽기(Non repeatable read) update -> commit된 데이터를 읽어, 데이터 일관성이 깨진다. Repeatable read - 유령 데이터 읽기(Phantom read) 트랜잭션 시작 전 commit 된 데이터만 undo영역을 이용하여 읽는다. 일관성이 깨지지 않는다. insert -> commit 된 데이터를 읽어, 데이터를 추가로 읽어 데.. 2022. 8. 23.
[Mysql] rownum 활용 Mysql은 Oracle과는 다르게 rownum을 지원하지 않아서 커스텀으로 만들어서 사용해줘야 한다. 함수를 사용하여 rownum을 지정해줄 수도 있다. 커스텀 rownum 함수 row_number() 커스텀 rownum select @rownum:= @rownum + 1 as rownum, t.* from table1 t, (select @rownum := 0) r; select rt.* from ( select @rownum:= @rownum +1 as rownum, t.* from table1 as t, (select @rownum := 0) as r ) as rt where rt.rownum between 2 and 4; select rt.* from ( select @rownum:= @rown.. 2022. 7. 20.
[데이터베이스] 무결성 제약 조건 도메인 무결성 제약조건 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건이다. ex) 주문 일자 속성 -> 날짜 값만을 가져야 함 개체 무결성 제약조건 기본키는 NULL이면 안되며, 유일해야 한다. 참조 무결성 제약조건 부모 릴레이션에서 튜플을 삭제할 경우 RESTRICTED : 자식에서 참조하고 있다면 삭제를 거부 CASCADE : 자식의 튜플까지 삭제 DEFAULT : 자식의 외래 키 값을 DEFAULT 값으로 변경 NULL : 자식의 외래키 값을 NULL로 변경 2022. 6. 15.
[데이터 베이스] 제 4 정규형, 제 5 정규형 제4 정규형 1 대 N 다치 종속의 제거이다. 하나의 결정자가 다른 속성에서 여러 종속자를 결정할 때 다치 종속한다고 한다. 한 릴레이션에서 1 대 N으로 관계가 나타나도 되지만, 문제가 되는 부분은 1 : N, 1: N 두 개 이상으로 다치 종속이 구성되어있을 때 이상현상이 발생하므로 중심이 되는 속성을 기준으로 릴레이션을 분리해주어야 한다. 이름 과목 동아리 홍길동 데이터베이스 농구 홍길동 보안 축구 홍길동 데이터베이스 야구 해당 테이블에서 과목을 추가하게 되면, 동아리도 추가를 해줘야 하는 문제가 발생한다. 그러므로 이름, 과목 / 이름, 동아리로 분리해줘야 한다. 제 5 정규형 조인 종속성이 존재하면 제5 정규형 대상이다. 조인 종속성이란 마치 조인을 한 것과 같은 릴레이션의 중복을 제거해주는 것.. 2022. 6. 13.