728x90
반응형
데이터모델링
- 모델링은 사건에 관한 양상(Aspect)이나 관점(Perspective)을 연관된 사람이나 그룹을 위하여 명확하게 하는 것이다
- 모델링은 데이터관점, 프로세스관점, 상관관점을 가지고 있다
- 데이터모델링은 정보시스템을 구축하기 위해, 해당 업무에 어떤 데이터가 존재하는지 또는 업무가 필요로 하는 정보는 무엇인지를 분석하는 방법이다
- 데이터모델링의 특징은 가시화, 명세화, 구조화, 문서화, 추상화의 특징을 가지고 있다
- 데이터모델링은 개념적데이터모델링, 논리적데이터모델링, 물리 적데이터모델링으로 진행한다
- 데이터모델링의 세가지 핵심개념은 Things, Relationship, Attributes로 구분된다.
- 엔터티 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(thing)이다.
- 속성이란 사전적인 의미로는 사물(事物)의 성질, 특징 또는 본질 적인 성질, 그것이 없다면 실체를 생각할 수 없는 것으로 정의한다.
- 속성은 기본속성, 설계속성, 파생속성의 구분된다.
- 관계는 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태고 할 수 있다.
- 관계는 관계명, 관계차수, 관계선택사양에 대한 정의가 필요하다.
- 식별자(Identifiers)는 여러 개의 집합체를 담고 있는 하나의 통에 서 각각을 구분할 수 있는 논리적인 이름을 지칭한다.
- 주식별자는 유일성, 최소성의 기본적인 특징과 데이터 값이 변하 지 않고, 항상 존재하는 특징을 가지고 있다.
- 외부식별자(Foreign Identifier)는 자기 자신의 엔터티에서 필요 한 속성이 아니라 다른 엔터티와의 관계를 통해 자식 쪽에 엔터티 에 생성되는 속성을 외부식별자라 하며 데이터베이스 생성 시에 Foreign Key역할을 한다.
- 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우를 식별자 관계(Identifying Relationship)라고 지칭한다.부모엔터 티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우가 있다. 이과 같은 경우를 비식별자 관계(Non-Identifying Relationship)라고 한다 • 성능 데이터 모델링이란 데이터베이스 성능향상을 목적으로 설계 단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이 블분핛, 조인구조, PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것으로 정의할 수 있다.
- 설계를핛때정규화를하는것은기본적으로데이터에대핚중복 성을 제거하여 주고 데이터처리가 관심사별로 처리가 되는 경우가 많기 때문에 성능이 향상되는 특징을 가지고 있다. • 조회 성능을 위해 설계단계에서부터 무조건 반정규화는 타스크를 해서는 안되며 기본적으로 정규화된 데이터 모델을 생성하도록 노력해야 한다
- 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O 량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상이 되거나 칼럼을 계산하여 읽을 때 성능이 저하 되는 경우가 예상되는 경우 반정규화를 수행하게 된다.
- 대량의 데이터가 처리되는 테이블에 성능이 저하되게 되는 이유 는 SQL문장에서 데이터를 처리하기 위한 입출력의 양(I/O의 양) 이 증가하기 때문이다.
- 대량 데이터가 테이블에 존재하고 이 테이블에서 트랜잭션이 처리 될 때 성능을 향상 시킬 수 있는 방법으로 테이블을 여러 가지 분할 설계할 수 있다.
- 논리적인 데이터 모델에서 이용이 되는 슈퍼/서브타입의 데이터 모델을 성능을 고려한 물리적인 데이터 모델에서 변홖하는 방법은 3가지(1:1타입, 슈퍼+서브타입, All in One 타입)가 있다.
- 3가지 중 한 가지를 선택하는 기준은 테이블에 발생되는 데이터양 과 트랜잭션의 유형에 따라 결정하여 성능에 최적화된 테이블의 모습을 만들 수 있다.
- 분산 데이터베이스는 데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 여러 지역노드로 위치시켜 사용성/성능 등을 극대화 시킨 데이터베이스이다.
SQL기본및활용
제1장 SQL 기본
제1절 관계형 데이터베이스 개요
- 특정 데이터들의 집합에서 필요로 하는 데이터를 꺼내서 조회하고 새로운 데이터를 입력/수정/삭제하는 행위를 통해서 사용자는 데 이터베이스와 대화하게 된다.
- SQL(Structured Query Language)은 이러핚 대화를 가능하도 록 매개 역핛을 하는 것이다.
- SQL은 관계형 데이터베이스의 데이터 정의, 데이터 조작, 데이터 제어를 위해 사용하는 언어이다.
제2절 DDL (Data Definition Language)
- 데이터 유형은 데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준이라고 생각하면 된다.
- 중요핚 데이터 유형으로는 CHARACTER(s), VARCHAR(s), NUMERIC, DATETIME 유형이 있다.
- 테이블은 CREATE TABLE 문장에 의해 생성되고,
- ALTER TABLE 문장에 의해 수정되며,
- DROP TABLE 문장에 의해 삭제되고,
- RENAME TABLE 문장에 의해 재명명된다.
제3절 DML
- INSERT INTO 문장에 의해 데이터가 입력되고,
- UPDATE 문장에 의해 데이터가 수정되고,
- DELETE 문장에 의해 데이터가 삭제되고,
- SELECT 문장에 의해 데이터가 조회된다.
- DDL보다는 DML이 더 많이 사용되고, DML 중 SELECT 문장이 가장 많이 사용된다.
제4절 TCL
- TRANSACTION은 ALL OR NOTHING 개념이다.
- COMMIT 문장을 통해 트랜잭션을 완료하고,
- ROLLBACK 문장을 통해 트랜잭션을 철회하며,
- SAVEPOINT/SAVE TRANSACTION을 통해 트랜잭션의 일부만 ROLLBACK 할 수 있다.
제5절 WHERE 절
- WHERE 조건절에 제한을 두어 원하는 자료만을 조회할 수 있다.
- WHERE 절에 사용되는 연산자는 비교 연산자/ SQL 연산자/ 논리 연산자/ 부정 연산자가 있다.
- NULL 값의 비교 연산은 IS NULL, IS NOT NULL 이라는 정해진 문구를 사용해야 제대로 된 결과를 얻을 수 있다.
- 테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 Oracle은 ROWNUM을 SQL Server는 TOP 기능을 사용할 수 있다.
제6절 FUNCTION
- 사용자는 벤더에서 제공하는 내장 함수를 통해 데이터 값을 간편 하게 조작할 수 있다.
- 단일행 함수는 처리하는 데이터의 형식에 따라서 문자형, 숫자형, 날짜형, 변환형, NULL 관련 함수로 나눌 수 있다.
제7절 GROUP BY, HAVING 절
- 집계 함수(Aggregate Function)는 여러 행들이 모여서 그룹당 단 하나의 결과를 돌려주는 다중행 함수의 일부로서 COUNT, SUM, AVG, MAX, MIN 함수가 있다.
- GROUP BY 절은 집합별 통계 정보의 기준을 명시하고,
- HAVING 절에는 집합에 대한 제한 조건을 두어 조건을 만족하는 내용만 출력한다.
제8절 ORDER BY 절
- ORDERBY절은 조회된 자료를 원하는 칼럼순으로 정렬하는 기능을 수행하고, SELECT 문장의 제일 마지막에 위치한다.
- SELECT 문장은 FROM 절, WHERE 절, GROUP BY 절, HAVING 절, SELECT 절, ORDER BY 절 순서로 실행된다.
제9절 JOIN
- 두 개 이상의 테이블들을 연결하여 데이터를 출력하는 것을 JOIN 이라고 하며,
- WHERE 절의 JOIN 조건에 대해서 EQUI JOIN과 Non EQUI JOIN으로 구분할 수 있다.
제2장 SQL 활용
제1절 STANDARD JOIN
- ANSI-SQL에서 규정한 INNER JOIN/ NATURAL JOIN/ USING 조건절/ ON 조건절/ CROSS JOIN/ OUTERJOIN 문법을 통해
- 사용자는 테이블 간의 JOIN 조건을
- FROM 절에서 명시적으로 정의할 수 있다.
제2절 집합 연산자(SET OPERATOR)
- 두 개 이상의 테이블에서 JOIN을 사용하지 않고, SET 연산자는 여러 개의 SQL문을 연결하여 데이터를 결합하는 방식을 사용한다.
- UNION은 합집합,
- UNION ALL은 확장된 합집합,
- INTERSECT는 교집합,
- EXCEPT/MINUS는 차집합을 나타낸다.
제3절 계층형 질의와 셀프 조인
- 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위 해서 계층형 질의(HIERARCHICAL QUERY)를 사용한다.
- 엔터티를 순환관계 데이터 모델로 설계할 경우 계층형 데이터가 발생한다. 순환관계 데이터 모델의 예로는 조직도, 사원(관리자포 함), 메뉴 등이 있다.
- 셀프 조인(SELF JOIN)이란 동일 테이블 사이의 조인을 말하며, FROM 절에 동일 테이블이 두 번 이상 나타난다.
제4절 서브쿼리
- 서브쿼리란 하나의 메인쿼리안에 포함되어 있는 종속적인 SQL 문장을 말하는 것으로 괄호( )로 묶어져 있다.
- 위치나 기능에 따라 WHERE 절 : NESTED SUBQUERY/ FROM 절 : INLINE VIEW/ SELECT절 외 : SCALAR SUBQUERY로 구분할 수 있다.
- 인라인뷰는 하나의 SQL 문장에 절차성을 줄 수 있다.
- 스칼라 서브쿼리는 함수의 성격을 가지고 있다.
제5절 GROUP FUNCTION
- 데이터 분석을 위한 GROUP FUNCTION으로는
- 소그룹 간의 소계를 계산하는 ROLLUP 함수,
- GROUP BY 항목들 간의 다차원적인 소계를 계산할 수 있는 CUBE 함수,
- 특정 항목에 대한 소계를 계산하는 GROUPING SETS 함수가 있 다.
제6절 WINDOW FUNCTION
- 데이터 분석을 위한 WINDOW FUNCTION은 부분적이나마 행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수이다.
- 첫 번째, 그룹 내 순위(RANK) 관련 함수는 RANK, DENSE_RANK, ROW_NUMBER 함수가 있다.
- 두 번째, 그룹 내 집계(AGGREGATE) 관련 함수는 일반적으로 많이 사용하는 SUM, MAX, MIN, AVG, COUNT 함수가 있다.
- 세 번째, 그룹 내 행 순서 관련 함수는 FIRST_VALUE, LAST_VALUE, LAG, LEAD 함수가 있다.
- 네 번째, 그룹 내 비율 관련 함수는 CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT 함수가 있다.
제7절 DCL(Data Control Language)
- 유저를 생성하고 권한을 제어할 수 있는 DCL(DATA CONTROL LANGUAGE) 명령어가 있으며,
- GRANT 문장을 통해 권한을 생성하고
- REVOKE 문장을 통해 권한을 회수한다.
제8절 절차형 SQL
- 절차형 SQL을 이용하여 SQL 문장의 조건에 따른 분기 처리나 SQL 문장의 연속적인 실행을 이용하여 특정 기능을 수행하는 저장 모듈을 생성할 수 있다.
- 절차형 SQL을 이용하여 PROCEDURE, USER DEFINED FUNCTION , TRIGGER를 만들 수 있다.
- 절차형 SQL을 이용하여 SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하는 PROCEDURE를 만들 수 있다.
- 앞에서 학습한 SUM, SUBSTR, NVL 등의 함수는 벤더에서 미리 만 들어둔 내장 함수이고, 사용자가 별도로 만든 함수를 USER DEFINED FUNCTION이라고 한다.
- Trigger란 특정한 테이블에 INSERT, UPDATE, DELETE와 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램이다.
728x90
반응형
'Computer Science > 데이터베이스' 카테고리의 다른 글
[Structured Query Language] 1과목: 데이터 모델링 이해_제2절 엔터티/ 제3절 속성/ 제4절 관계 (0) | 2022.10.09 |
---|---|
[Structured Query Language] 1과목: 데이터 모델링 이해_제1절 데이터 모델링 개요 (0) | 2022.10.09 |
[Oracle-SQL] 회사 데이터베이스3 (0) | 2022.06.13 |
[Oracle-SQL] 회사 데이터베이스2 (0) | 2022.06.13 |
[Oracle-SQL] 회사 데이터베이스 (2) | 2022.06.07 |