[DB] 스토리지, 무결성 1. 스토리지 - 저장장치 - DAS (Direct Attached Storage) - 직접연결 (USB, 외장하드) - NAS (Network Attached Storage) - 네트워크 연결 (시놀리지, 큐냅, IP TIME - SAN (Storage Area Network) - 혼합 방식 (주로 기업 내의 인트라넷 사용) 2. 데이터베이스 무결성 - 데이터를 인가되지 않은 방법으로 변경할 수 없도록 보호하는 특성 정보처리기사 준비/DB 파트 정리 2024.04.10
[DB] 정규화, 반정규화, 후보키 1. 정규화 - 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정 - 정규화의 목적 : 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것 - 정규화 단계 (도, 부, 이, 결, 다, 조) -> 두부이걸다줘 - 제 1정규화 번호 색 1 파랑 2 노랑 3 초록,빨강 원자값이 두개 이상이 아닌 하나로 있어야 하는 것 번호 색 1 파랑 2 노랑 3 초록 3 빨강 이렇게 나눠야 한다. - 제 2 정규화 ( 부분함수 종속 제거 ) 기본키와 큰 연관이 없는 데이터를 따로 빼주는 것 학생 번호 강좌 강의실 학점 1 자바 101 4.5 2 오라클 102 4.3 3 파이썬 103 4.2 4 파이썬 103 4.1 보통 학생번호가 기본키라는 가정 하에 강의.. 정보처리기사 준비/DB 파트 정리 2024.04.10
[DB] VIEW, 인덱스, 집합 연산자, join 1. VIEW - 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상테이블 - 뷰는 논리적으로 존재 - 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용 가능 - 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다. - VIEW의 장단점 장점 단점 - 논리적 데이터 독립성을 제공함 - 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원함 - 사용자의 데이터 관리를 간단하게 해줌 - 접근 제어를 통한 자동 보안 제공 - 독립적인 인덱스를 가질 수 없음 - 뷰의 정의를 변경할 수 없음 - 뷰로 구성된 내용에 대한 삽.. 정보처리기사 준비/DB 파트 정리 2024.04.10
[DB] 회복 기법, 병행 제어 기법, 로킹 단위 1. 회복 기법 - 취소(Undo) : 로그에 보관한 정보를 이용하여 가장 최근에 변경된 내용부터 거슬러 올라가면서 트랜잭션 작업을 취소하여 원래의 데이터베이스로 복구 - 재시도(Redo) : 덤프와 로그를 이용하여 가장 최근의 정상적인 데이터베이스로 회복시킨 후 트랜잭션을 재실행 시킴 연기 갱신 기법 (Deferred Update) - 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 기법 - 트랜잭션이 수행되는 동안 갱신된 내용은 일단 로그에 보관 - 트랜잭션의 부분 완료 시점에 로그에 보관한 갱신 내용을 실제 데이터베이스에 기록 - 트랜잭션이 부분 오나료되기 전에 장애가 발생하여 트랜잭션이 Rollback되면 트랜잭션이 실제 데이터베이스에 영향을 미치지 않았기 떄문에 .. 정보처리기사 준비/DB 파트 정리 2024.04.03
[DB]트랜잭션 (Transaction), CRUD 1. 트랜잭션의 정의 - 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들 - 데이터베이스에서 하나의 기능이 수행 될 때 반드시 정해진 기능,작업까지 실행되고 종료되어야 함 2. 트랜잭션의 특성 특성 의미 Atomicity (원자성) 트랜잭션의 연산은 데이터 베이스에 모두 반영 (완료, commit) or 모두 미반영 (복구, Rollback)되어야 함 Consistency (일관성) 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함 Isolation (독립성, 격리성, 순차성) 둘 이상의 트랙잭션이 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음.. 정보처리기사 준비/DB 파트 정리 2024.04.03
[DB] 요점 및 오답노트 1. COUNT 함수 - null값은 카운트 하지 않는다. 2. π속성(테이블명) - π 는 해당 속성의 리스트만 전부 불러온다. 3. INDEX - create index index_name on student(name); - 데이터를 효율적으로 검색하고 정렬하기 위해 사용되는 데이터구조 - 원래 속성을 인덱스명을 따로 부여하여 생성함 - 쿼리문 작성 시 원래 속성명 대신 인덱스명을 사용하면 데이터에 빠르게 접근 가능 - 인덱스는 검색 쿼리가 자주 사용되거나, 데이터의 카디널리티가 높고, 정렬, 그룹화, 조인 또는 범위 검색이 필요한 경우 매우 효과적이다. 4. 서브쿼리 - 서브쿼리인 SELECT문에는 UNION, ORDER BY절을 사용할 수 없음 5. DISTINCT COUNT(A) => 중복무시 .. 정보처리기사 준비/DB 파트 정리 2024.03.30
[DB] 그룹함수 1. 그룹함수 - GROUP BY 절에 지정된 그룹별로 속성의 값을 집계할 때 사용된다. - 테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수 함수 기능 COUNT(속성명) 그룹별 튜플 수를 구하는 함수 SUM (속성명) 그룹별 합계를 구하는 함수 AVG (속성명) 그룹별 평군을 구하는 함수 MAX (속성명) 그룹별 최대값을 구하는 함수 MIN (속성명) 그룹별 최소값을 구하는 함수 STDDEV (속성명) 그룹별 표준편차를 구하는 함수 VARIANCE (속성명) 그룹별 분산을 구하는 함수 ROLLUP (속성명) - 인수로 주어진 속성을 대상으로 그룹별 소계를 구하는 함수 - 속성의 개수가 N개이면 N+1 레벨까지, 하위 레벨에서 상위 레벨 순으로 데.. 정보처리기사 준비/DB 파트 정리 2024.03.28
[DB] DB 정의, 구조, 설계순서, DDL, DML, DCL, 트리거 1. 데이터베이스란? - 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합 - 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음 - 예) 회원들의 아이디, 비밀번호, 이름, 생년월일 등을 저장해놓는 것 2. 데이터베이스 구조 3. SQL의 정의 - (Structured Query Language) 관계형 데이터베이스의 표준 질의어로 정의, 조장, 제어 기능이 있다. - SQL의 분류 3가지 - 일반 형식 ( SELECT 와 FROM 절은 필수작성 SELECT 속성명1, 속성명2... FROM 테이블명 WHERE 조건 GROUP BY 속성명, 속성명 HAVING 조건 ORDER BY 속성명 DDL (Data Define Lang.. 정보처리기사 준비/DB 파트 정리 2024.03.28
[JPA] CascadeType 영속성 전이 위 사진처럼 엔티티를 설계할 때 사용 - CascadeType.ALL : 모든 Cascade를 적용 - CascadeType.PERSIST : 엔티티를 영속화할 때, 연관된 엔티티도 모두 적용 - CascadeType.REMOVE : 엔티티를 제거할 때, 연관된 엔티티도 모두 제거 - CascadeType.MERGE : 엔티티 상태를 병합할 때, 연관된 엔티티도 모두 병합 - CascadeType.DETACH : 부모 엔티티를 detach() 수행하면, 연관 엔티티도 detach()상태가 되어 변경 사항 반영 X - CascadeType.REFRESH : 상위 엔티티를 새로고침할 때, 연관된 엔티티도 모두 새로고침 [Spring Boot] 스프링부트 (IntelliJ)/JPA 2024.03.27
[JPA] 엔티티 설계시 주의점 1. 엔티티에는 가급적 Setter를 사용하지 말자 - Setter가 모두 열려있다면, 변경 포인트가 너무 많아서 유지보수가 어렵다. - Setter말고 같은 기능을 하는 메서드를 만들어서 사용한다. 2. 모든 연관관계는 지연로딩으로 설정한다. - 즉시로딩(EAGER)과 지연로딩(LAZY)이 있는데 - 즉시로딩은 하나의 엔티티를 로딩할 때 연관 된 데이터를 모두 불러오는 것 - 지연로딩은 필요한 시점에 연관된 엔티티의 데이터만 불러옴 - 연관된 엔티티를 함께 DB에서 조회해야 하면, fetxh join 또는 엔티티 그래프 기능을 사용한다. - @OneToOne, @ManyToOne관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해야 한다. 3. 컬렉션은 필드에서 초기화 한다. - null 문제에서 안전.. [Spring Boot] 스프링부트 (IntelliJ)/JPA 2024.03.27