일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring Security
- 자바스크립트
- CS지식
- 플러터
- 네트워크
- baekjoon
- Oracle
- Flutter
- springboot
- CS
- 스프링부트
- DB
- 파이썬
- 자바
- postgresql
- 데이터베이스
- 프로그래머스
- Java
- 리눅스
- backjoon
- javascript
- 백준
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- python
- 스프링
- spring
- 데이터
- 자료구조
- JPA
- 시큐리티
- Today
- Total
목록CS 지식/[데이터베이스] (10)
Jin's Dev Story
무결성 보장 방법 데이터를 조작하는 프로그램 내에서 데이터 생성, 수정, 삭제 시 무결성 조건을 검증 데이터베이스 무결성 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구함(같은 값 X) 외래키 값은 NULL이거나 참조 테이블의 PK 값이어야 함 한 컬럼에 대해 NULL 허용 여부와 자료형, 규칙으로 타당한 데이터 값 지정
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
트랜잭션 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태를 변화시킨다는 것 → SQL 질의어를 통해 DB에 접근하는 것 - SELECT - INSERT - DELETE - UPDATE 작업 단위 → 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것 예시) 사용자 A가 사용자 B에게 만원을 송금한다. * 이때 DB 작업 - 1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경 - 2. 사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경 현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문 → 이를 통틀어 하나의 트랜잭션이라고 한다. - 위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의 작업(..
정규화 테이블 간 증복된 데이터를 허용하지 않는 것 중복된 데이터를 만들지 않으면, 무결성을 유지할 수 있고, DB 저장 용량 또한 효율적으로 관리할 수 있음 목적 데이터의 중복을 없애면서 불필요한 데이터를 최소화 시킴 무결성을 지키고, 이상 현상을 방지 테이블 구성을 논리적이고 직관적으로 할 수 있음 데이터베이스 구조 확장 용이 제 1정규화(1NF) 테이블 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분리시키는 것 조건 - 어떤 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있어야함 - 모든 속성에 반복되는 그룹이 나타나지 않음 - 기본키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 함 현재 테이블은 전화번호를 여러 개 가지고 있어 원자값이 아님 따라서 1NF에 맞추기 위해 아래와 ..
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..
정규화를 해야하는 이유 → 잘못된 테이블 설계로 인해 이상 현상이 나타나기 때문 1. 삽입 이상 (Insertion Anomaly) 기본키가 {Student ID, Course ID} 인 경우 -> Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생함. 결국 Course ID를 Null로 할 수밖에 없는데, 기본키는 Null이 될 수 없으므로, Table에 추가될 수 없음 굳이 삽입하기 위해서는 '미수강'과 같은 Course ID를 만들어야 함 불필요한 데이터를 추가해야지, 삽입할 수 있는 상황 = Insertion Anomaly 2. 갱신 이상 (Update Anomaly) 만약 어떤 학생의 전공 (Department) 이 "컴퓨터에서 음악"으로 바뀌는 경우 모든 Departmen..