본문 바로가기

분류 전체보기

(21)
[데이터베이스 기초] 정규화 정리 좋은 릴레이션 스키마란? 논리적인 수준에서는 릴레이션이 데이터 의미를 얼마나 잘 표현하고 있는 지, 구현 수준에서는 베이스 릴레이션의 스키마가 어떻게 구성되어 있는 지가 판단 기준이 된다. 릴레이션 스키마의 품질 측정 기준 애트리뷰트의 의미를 스키마가 명확하게 표현하고 있는 가 튜플의 중복값을 얼마나 감소시킬 수 있는 가 튜플의 NULL 값을 얼마나 줄일 수 있는 가 불필요한 튜플 생성 가능성을 허용하면 안 된다. 릴레이션 품질을 위한 가이드라인 1) 하나의 엔티티 또는 릴레이션 타입 에는 하나의 릴레이션 스키마를 설계해라! 하나의 릴레이션 스키마에 여러개의 개체나 관계 타입을 섞어 놓아서는 안된다. 관계 스키마를 설계할 때 의미를 쉽게 설명할 수 있어야 한다. 문제점 : 중복값이 많이 생긴다. 2) i..
[데이터베이스 기초] Entity-Relationship (ER) Model 정리 Entity-Relationship (ER) Model 개념 스키마를 설계할 때 가장 인기있게 사용되는 모델로 표준으로 정해져 있진 않지만 거의 표준으로 가장 많이 사용된다. 데이터베이스 설계 과정 ERD 예시 Entity 독립적인 존재를 갖는 실세계의 어떤 것이다. ex) 사람, 자동차 칩, 회사... Attribute 객체를 설명하기 위한 정보 - simple / composite - single-valued / multivalued - stored / derived 인지에 따라 나뉜다. Entity Type과 Entity Set Entity Type : 동일한 attribute를 갖는 attribute들의 집합을 위한 타입을 설명하는 것이다. 이름과 속성 정보로 표현되며 schema 또는 inten..
[데이터베이스 기초] 관계대수식 정리 Relational Algebra 릴레이션을 조작하기 위한 연산들의 집합으로 검색 요구를 명세하는데 주로 사용, 질의 결과는 릴레이션 형태로 표현한다. Relational Operations SELECT(σ)와 PROJECT(𝛑) 연산 UNION (⋃), INTERSECTION (⋂), DIFFERENCE (-), CARTESIAN PRODUCT (x) JOIN(⋈) 연산 DIVISION, OUTER JOIN, AGGREGATE FUNCTIONS SELECT 연산 (σ) 조건에 만족하는 튜플들의 부분 집합을 선택하는 연산 조건에는{=, SELECT 결과 릴레이션의 튜플 수 / 전체 튜플 수 선택률은 DBMS가 질의 처리를 할 때 여러가지 선택 조건 중 어떤 조건을 먼저 처리할 지 선택하는데 사용 SELE..
[데이터베이스 기초] SQL의 VIEW 정리 View 가상 테이블이다. 실제 있는 테이블이 아니라 마치 있는 것처럼 보이는 테이블을 뷰라고 한다. 굳이 뷰를 만들지 않고 별도의 테이블을 만들면 안되나? 학생 테이블의 일부를 뷰 대신 별도의 테이블로 만든다면 데이터의 중복이 발생하는 문제가 생긴다. * 검색 쿼리는 문제 없지만 업데이트 연산에 제약이 있다 CREATE VIEW COM_STUDENT(Sno, Sname, Year) AS SELECT Sno, Sname, Year FROM STUDENT WHERE Dept = '컴퓨터'; VIEW를 정의하면서 SLECT 절과 COM_STUDENT (Sno, Sname, Year) 의 내용이 같다면 (Sno, Sname, Year)는 생략 가능하다. ProjectX에서 일하는 모든 직원의 Lname과 Fn..
[데이터베이스 기초] SQL CREATE ASSERTION 과 TRIGGER 정리 CREATE ASSERTION 문 일반적인 제약 조건을 생성할때 사용한다. ex) 부서 매니저의 급여는 부서 직원보다 많아야 한다. CREATE ASSERTION SALARY_CONSTRAINT CHECK(NOT EXISTS (SELECT * FROM EMPLOYEE E, EMPLOYEE M, DEPARTMENT D WHERE E.Salary > M.Salary AND E.Dno=D.Dnumber AND D.Mgr_ssn=M.Ssn)); CHECK 안의 내용이 TRUE 가 되어야 한다. CHECK 절은 튜플들이 INSERT, UPDATE 될 때 체크하지만 CREATE ASSERTIOIN 문은 관련된 튜플이 업데이트 될 때 계속 체크해야 한다. DBMS 입장에서는 CHECK 절이 더 간단하다.CREATE ..
[데이터베이스 기초] 복잡한 질의 정리 (WITH, CASE, Recursive Queries) WITH and CASE WITH 절 : 특정 쿼리내에서 사용할 수있는 임시 테이블을 정의한다. 특정 쿼리가 끝나면 함께 사라진다. * 비슷한 조건이 여러번 나올 경우에 사용하면 편하게 사용할 수 있다. ex) 직원 수가 3명 이상인 부서에 대해서 부서 번호, 급여가 40000보다 많은 지원 수를 검색하라 WITH BIGDEPTS (Dno) AS (SELECT Dno FROM EMPLOYEE GROUP BY Dno HAVING COUNT(*) > 3) SELECT Dno, COUNT(*) FROM EMPLOYEE WHERE Salary>40000 AND Dno IN BIGDEPTS GROUP BY Dno; CASE 사용법 UPDATE EMPLOYEE SET Salary = CASE WHEN Dno = 5..
[데이터베이스 기초] SQL의 집단함수와 GROUP BY 절, HAVING 절 정리 집단함수 : 검색 결과의 합이나 개수 등 요약 정보를 제공하는 함수로 COUNT, SUM, MAX, MIN, AVG가 있음 * 집단함수는 SELECT 절에만 오는 것이 아닌, WHERE 절에도 올 수 있다. * 일반적으로 집단함수를 정의할 경우 null은 어떻게 처리할까? 보통 null값은 빼고 계산한다. 전체가 null일 경우는 null값을 돌려주지만 예외로 COUNT인 경우만 0을 돌려준다. 직원의 급여 합, 급여 최대값, 급여 최솟값, 급여 평균을 검색하라 SELECT SUM(Salary), Max(Salary), MIN(Salary), AVG(Salary) FROM EMPLOYEE; 직원의 수를 검색하라 SELECT COUNT(*) FROM EMPLOYEE; 급여 종류의 수를 검색하라 SELECT..
[데이터베이스 기초] SQL 중첩 쿼리와 조인 쿼리 정리 Three-Valued Logic IS [NOT] NULL : 값이 NULL 여부 확인 ex) WHERE Super_ssn IS NULL; Nested queries : sql문의 where 절에 다른 sql문이 들어가 있는 경우 outer query와 nestede query에 같은 이름의 attribute가 있다면 기본적으로 가장 가까운 attribute로 간주한다. nested query는 마치 루프를 돌듯이 작동된다. nested query 안 에서는 outer query의 필드는 마치 하나로 고정된 것처럼 작동. ANY, ALL 키워드 ANY : 집합 중 하나라도 만족 할 경우 TRUE ALL : 집합에 모든 내용이 만족 할 경우 TRUE ex) WHERE Salary > ALL (SELECT ..
[데이터베이스 기초] SQL 기본적인 질의 정리 SELECT문 SELECT FROM WHERE ; 작동 방식: 대상 테이블을 찾고 where 조건 에 맞는 튜플들을 찾은 후 원하는 attribute들만 추출한다. FROM -> WHERE -> SELECT 순으로 작동 WHERE 절을 생략하는 경우, FROM 절의 테이블들을 카티션 프로덕트한 결과를 보여준다. 테이블의 모든 attributes을 검색하고 싶다면 * 을 사용하면 된다. SQL에서 table은 꼭 집합일 필요 없음. 따라서 중복을 허용한다(중복을 자동으로 제거하지 않는다). 왜? 중복 제거 연산이 비쌈. sorting 하는 연산은 비싼 연산이다. 유저가 중복을 원할 경우도 있을 수 있다. 집단 함수에서 중복을 제거해 버리면 결과가 달라져버린다. -> 유저가 중복을 선택할 수 있도록 한다. ..
[데이터베이스 기초] SQL DDL문 정리 (CREATE, DROP, ALTER) DDL이란 데이터 정의어로 간단히 말하면 테이블을 만들고(CREAET) 삭제하고(DROP) 수정(ALTER)하는 역할을 하는 언어이다. 용어 정리 스키마 : 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것을 말한다. 스키마 이름, 관리자 아이디, 엘리먼트 설명 정보 ( 테이블, 제약조건, 뷰, 도메인, 사용자 권한 등)이 포함된다. CREATE SCHMA COMPANY AUTHORIZATION 'Jsmith' 카탈로그: 스키마들의 정보를 모아둔 것 특별한 형태의 스키마를 갖는다. INFORMATINO_SCHEMA 라는 스키마 정보들을 갖는 스키마를 갖는다. (디비가 관리하는 모든 엘리먼트 정보를 갖고 있음) -> 시스템 카탈로그 데이터 타입 종류 Numeric INTEGER, SMALLI..