[데이터베이스] 데이터베이스 무결성
·
CS 지식/[데이터베이스]
무결성 보장 방법 데이터를 조작하는 프로그램 내에서 데이터 생성, 수정, 삭제 시 무결성 조건을 검증 데이터베이스 무결성 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구함(같은 값 X) 외래키 값은 NULL이거나 참조 테이블의 PK 값이어야 함 한 컬럼에 대해 NULL 허용 여부와 자료형, 규칙으로 타당한 데이터 값 지정
[데이터베이스] DBMS
·
CS 지식/[데이터베이스]
DBMS(데이터베이스 관리 시스템) 다수의 사용자가 데이터베이스 내의 데이터를 접근할 수 있도록 설계된 시스템 DBMS의 기능 1) 정의 기능(DDL : Data Definition Language) 데이터베이스가 어떤 용도이며 어떤 식으로 이용될 것이라는 것에 대한 정의가 필요함 CREATE, ALTER, DROP, RENAME 2) 조작 기능(DML : Data Manipulation Language) 데이터베이스를 만들었을 때 그 정보를 수정하거나 삭제 추가 검색 할 수 있어야 함 SELECT, INSERT, UPDATE, DELETE 3) 제어 기능(DCL : Data Control Language) 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령 GRANT REVOKE
[데이터베이스] 트랜잭션(Transaction)
·
CS 지식/[데이터베이스]
트랜잭션 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태를 변화시킨다는 것 → SQL 질의어를 통해 DB에 접근하는 것 - SELECT - INSERT - DELETE - UPDATE 작업 단위 → 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것 예시) 사용자 A가 사용자 B에게 만원을 송금한다. * 이때 DB 작업 - 1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경 - 2. 사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경 현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문 → 이를 통틀어 하나의 트랜잭션이라고 한다. - 위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의 작업(..
[데이터베이스] 정규화(Normalization)
·
CS 지식/[데이터베이스]
정규화 테이블 간 증복된 데이터를 허용하지 않는 것 중복된 데이터를 만들지 않으면, 무결성을 유지할 수 있고, DB 저장 용량 또한 효율적으로 관리할 수 있음 목적 데이터의 중복을 없애면서 불필요한 데이터를 최소화 시킴 무결성을 지키고, 이상 현상을 방지 테이블 구성을 논리적이고 직관적으로 할 수 있음 데이터베이스 구조 확장 용이 제 1정규화(1NF) 테이블 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분리시키는 것 조건 - 어떤 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있어야함 - 모든 속성에 반복되는 그룹이 나타나지 않음 - 기본키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 함 현재 테이블은 전화번호를 여러 개 가지고 있어 원자값이 아님 따라서 1NF에 맞추기 위해 아래와 ..
[데이터베이스] 인덱스(Index)
·
CS 지식/[데이터베이스]
DB Index 목적 : RDBMS에서 검색 속도를 높이기 위한 기술 Table의 Column을 색인화 함 (따로 파일로 저장) → 해당 Table의 Record를 Full scan 하지 않음 → 색인화 된 (B+ Tree 구조로) Index 파일 검색으로 검색 속도 향상 과정 : Table을 생성하면, MYD, MYI, FRM 3개의 파일이 생성됨 FRM : 테이블 구조가 저장되어 있는 파일 MYD : 실제 데이터가 있는 파일 MYI : Index 정보가 들어가 있는 파일 → Index를 사용하지 않는 경우, MYI 파일은 비어져 있음 그러나, 인덱싱하는 경우 MYI 파일이 생성됨 이후에 사용자가 Select 쿼리로 Index를 사용하는 Column을 탐색 시, MYI 파일의 내용을 검색함 단점 Ind..
[데이터베이스] 이상(Anomaly)
·
CS 지식/[데이터베이스]
정규화를 해야하는 이유 → 잘못된 테이블 설계로 인해 이상 현상이 나타나기 때문 1. 삽입 이상 (Insertion Anomaly) 기본키가 {Student ID, Course ID} 인 경우 -> Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생함. 결국 Course ID를 Null로 할 수밖에 없는데, 기본키는 Null이 될 수 없으므로, Table에 추가될 수 없음 굳이 삽입하기 위해서는 '미수강'과 같은 Course ID를 만들어야 함 불필요한 데이터를 추가해야지, 삽입할 수 있는 상황 = Insertion Anomaly 2. 갱신 이상 (Update Anomaly) 만약 어떤 학생의 전공 (Department) 이 "컴퓨터에서 음악"으로 바뀌는 경우 모든 Departmen..