본문 바로가기

학교공부/데이터베이스

(10)
9장 동시성 제어와 회복을 지원하기위해 트랜잭션 제공한다. 트랜잭션 예시 만약에 320명 갱신하다가 컴퓨터 꺼지면 어떻게하나? log(로그) 유지해서 튜플들 수정한 기록 남겨논다. 위에 경우는 둘중 하나만 돼서는 안된다. 둘다되거나 아니면 둘다 안되거나해야됨 즉 하나의 트랜잭션(단위)처럼 DBMS가 보장해야한다. 컴퓨터는 뭐가 트랜잭션인지 모르니까 저렇게 범위를 사람이 지정해줘야한다. commit하고 예약완료 메세지 보내야한다. 트랜잭션의 특성 4가지 1. 원자성 2. 일관성 디비는 일관성 - 일시적 비일관성 - 또다른 일관성 3. 고립성 4. 지속성 관계 완료와 철회 9.2 동시성 제어 여러 사람들이 동시에 테이블 접근해서 트랜잭션 사용하니까 트랜젝션 잘 관리해야한다. 동시성 제어 안할시 생길수 있는 문제들..
8장 뷰 & 시스템 카탈로그 먼저 뷰에 대해서 알아보자 with check option은 생략가능 예시 뷰쓰면 DBMS에서 실행 과정 뷰의 장점 릴레이션 바껴도 view에서는 영향 없다. 독립성 제공 보안기능 제공 뷰의 갱신 상황 1. 한 릴레이션에서 만들어진 뷰에 대한 갱신 상황 2. 두개의 릴레이션에서 만들어진 뷰에 대한 갱신 기본키인 사원번호가 없어서 삽입 거절당함 상황 3. 집답함수가 포함된 뷰 집답함수니까 당연히 안되지 타당하지 않음 갱신 불가능한 뷰 DBMS마다 지원하는게 다름 시스템 카탈로그 8.3 데이터 사전은 세 종류가 있다. 예시 그냥pdf한번 읽으셈
7장 릴레이션 정규화 이상하게 설계하면 중복생겨서 갱신 이상 유발한다 갱신 이상에는 세가지가 있다 나쁜 설계 문제점 1. 3개 부서보다 더 많이 속하면 릴레이션을 바꾸거나 애트리뷰트 추가해야된다. 2. 3개 미만으로 속하면 null값 넣어서 공간 낭비 그럼 이런식으로 튜플을 여러개 사용해서 해결할 수 있다. 하지만 이런 방법도 정보의 중복(부서말고 다 중복됨) 저장공간 낭비, 수정 이상(만약 부서이름이 바꼈을 때 모든 튜플의 부서이름 변경해야된다.) 해결방법 릴레이션 분해 정규화 db설계 지침 함수의 종속성 결정자 예시 두가지 표현 방법 결정자가 두개있을때 두개다 종속하면 완전 둘중 하나만 종속하면 부분함수적 종속성 이행적 함수적 종속석 A -> C ^ C -> B 여기서 A는 학번 C는 학과이름 B는 학과전..
6장 논리적인 설계를 물리적인 데이터 모델로 사상한다 실제로 db를 저장하는 보조 기억 장치 테이프는 백업용 탐색할때 같은 실린더에 있으면 효율적이라서 같은 실린더에 두는게 중요하다. 디스크에 화일 레코드 배치 6.8 6.9보다 좋은 지연 관리 방법 대부분 사용한다. 화일 조직 1. 히프파일 2.순차 파일 탐색은 좋은데 유지하는데 비용든다. 6.5 단일 단계 인덱스 기본 인덱스(primary index) 탐색 키가 데이터 화일의 기본 키인 인덱스를 기본 인덱스라고 부름 기본 인덱스는 기본 키의 값에 따라 정렬된 데이터 화일에 대해 정의됨 기본 인덱스는 흔히 희소 인덱스로 유지할 수 있음 각 릴레이션마다 최대한 한 개의 기본 인덱스를 가질 수 있음 희소인덱스는 블럭을 가르킨다. 클러스티링 인덱스 보조인덱스 블럭..
데이터베이스 4 -5 select문 중첩질의 where절에 select문 껴있는거 중첩질의에서 스칼라뽑아서 비교한다. 중첩질의에서 여러개나오면 연사자 사용해야한다 w조인질의 사용해서도 가능 상관중첩줄의. 중첩질의가 외부 질의에 선언된 릴레이션의 일부를 참조하는 질의 where뿐만아니라 from에도 중첩질의 사용가능 튜플개수 = 카디날리티 // 차수 = 컬럼의 개수 스칼라를 리턴한다는게 카디날리티 = 1 이라는거 카디날리티가 여러개인게 두번째 경우 세번째는 애트리뷰트도 여러개고 카디날리티 0이상 중첩질의가 select절에서도 쓰이긴하는데 잘 안씀. 애트리뷰트 리스트는 생략 가능 select문 사용해서 여러개 투플 삽입 , 애트리뷰트 리스트와 select 결과가 compatible해야됨 삭제 where에 아무것도 안쓰면 튜플 전..
실습 모음 이거 두개다 동등조인 SELECT e.last_name, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id – SELECT e.last_name, d.department_name FROM employees e INNER JOIN departments d ON (e.department_id = d.department_id) 실습 1 1. 다음 명령문의 오류는 무엇인가 ? SELECT employee_id, last_name sal x 12 ANNUAL SALARY FROM employees ; 공백있으면 "" 붙어줘야한다. 3. EMPLOYEES 테이블의 내용을 검색시 사원번호, 사원이름, 업무코..
데이터베이스 4-2 SQL 관계대수 - SQL로 둘다 표현 할줄 알아야한다. 디비전자는 편의를 위해 만들어진거다. 필수 연사자로 디비전을 만들어보자 (여집합 사용, 시험문제) 인터페이스는 두개 대화식은 콘솔창 이용해서 사용 아래는 호스트 언어 + 내포된 SQL 검색 & 조작 INSERT DELETE UPDATE 조작 SELECT 검색 데이터 정의어 인스턴스가 아닌 스키마를 제거 변경 생성 AUTHORIZATION 소유자 RESTRICT 스키마안에 데이터 없을 때 삭제 CASCADE 걍 다 삭제 밑에 세줄은 무결성 제약조건 거는거?? 찾아볼것 고정길이 -> 공간 낭비 가변길이 -> 비교할때 힘듬 그래서 보통 길이가 안변하고, 비교가 많은건 고정길이로 저장 제약조건 NOT NULL : null 허용 안함 default로는 허용함 UN..
데이터베이스 4장 관계대수 우린 관계 대수에 대해서만 알아본다. 관계 대수 관계 연산자를 통해 복잡한 관계 대수식을 만들 수 있다. 관계 연산자는 크게 두가지로 나눌 수 있다. 1. 실렉션 연산자 2. 프로젝션 연산자 예시 집합 연산자 합집합 교집합 차집합 합집합 호완이어야한다 이항연 산자 1. 합집합 연산자 연산순서 실렉션 먼저 그다음 프로젝션 2. 교집합 연산자 합집합 호환이 성립해야지 교집합이 성립. 예시 3. 차집합 차집합도 합집합 호환 성립해야지 사용가능 예시 카티션 곱 연산자 카디션 곱 다음에 원하는 튜플들을 실렉션 이용해서 사용하는게 대부분. 실제로는 이런게 순서대로 안함 카디션 곱해서 나오는게 값이 크면 오버헤드가 너무 커짐. 나중에 배우는 join으로 사용함. 그럼 바로 튜플로 값 나옴 예시 모든 경우를 포함하는 ..