[sqld] 요약
Hansei Cyber Security High Schoool (2022/3/2 ~ 2025/2/10)
https://signon.oracle.com/signin
데이터 모델링에서 중요한 세가지
성격
행위
관계
기본키를 참조하는 것 = 외래키
유일성과 최소성 = 후보키
SQL 실행순서 = 파실인(PEF)
이행 함수 종속성 제거 = 제3정규화
그룹함수 중에서 결합 가능한 모든 집계를 계산하는 것은? = CUBE
문자열 결합 = || 혹은 CONCAT
내부 스키마 = 물리적 저장 구조
Entity를 도출하고 그린다 → Entity를 배치한다 → Entity 간 관계를 설정한다 → 관계명을 서술한다 → 관계 참여도를 표현한다 → 관계의 필수 여부를 표현한다
^ = 문자열 시작
$ = 문자열 끝
계층형 조회에서 가장 상위 레벨 값 = 1
카디널리티 계산식 = 선택도 * 전체 레코드 수
논리적 모델링은 정규화를 무조건 해야 된다
cress join 은 카데시안 곱 발생
주식별자와 관계가 낮은 단계는? 제3정규화
인조식별자 = 최대한 범용적인 값 사용
%1 = 마지막이 1로 끝나는
DDL = create , alter , drop , rename , truncate
DML = insert , update , delete , select
DCL = grant , revoke
TCL = commit , rollback , savepoint
데이터 모델링의 특징
| 특징 | 설명 |
| 추상화 | 현실 세계를 간략하게 표현한다 |
| 단순화 | 누구나 쉽게 이해할 수 있도록 표현한다 |
| 명확성 | 명확하게 의미가 해석되어야 하고 한 가지 의미를 가져야 한다 |
데이터 모델링 단계
개념적 모델링
전사적 관점에서 기업의 데이터를 모델링한다
추상화 수준이 가장 높은 수준의 모델링이다
계층형 데이터 모델, 네트워크 모델, 관계형 모델에 관계없이 업무 측면에서 모델링한다
논리적 모델링
특정 데이터베이스 모델에 종속한다
식별자를 정의하고 관계, 속성 등을 모두 표현한다
정규화를 통해서 재사용성을 높인다
물리적 모델링
구축할 데이터베이스 관리 시스템에 테이블, 인덱스 등을 생성하는 단계이다
성능, 보안, 가용성, 등을 고려하여 database를 구축한다
데이터 모델링 관점
데이터
비즈니스 프로세스에서 사용되는 데이터를 의미한다
구조 분석 , 정적 분석
프로세스
비즈니스 프로세스에서 수행하는 작업을 의미함
시나리오 분석, 도메인 , 동적 분석
데이터와 프로세스
프로세스와 데이터 간의 관계를 의미함
CRUD(Create , Read , Update , Delete) 분석
3층 스키마의 독립성
논리적 독립성
- 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다
물리적 독립성
- 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다
3층 스키마 구조(p52)
외부 스키마
사용자 관점, 업무상 관련이 있는 data 접근이다
관련 Database의 View를 표시한다
응용 프로그램이 접근하는 Database를 정의한다
개념 스키마
설계자 관점, 사용자 전체집단의 Database 구조이다.
전체 Database 내의 규칙과 구조를 표현한다.
통합 database 구조이다
내부 스키마
개발자 관점, Database의 물리적 저장 구조이다
data 저장 구조 , 레코드 구조 , 필드 정의 , 인덱스 등을 의미함
Entity(p53)
Entity는 업무에서 관리해야 하는 데이터 집합을 의미하며 저장되고 관리되어야 하는 데이터이다
Entity는 개념 , 사건 , 장소 등을 의미하는 명사이다
Entity의 특징(p54)
| 엔터티 특징 | 설명 |
| 식별자 | Entity는 유일한 식별자가 있어야 한다 ex) 회원ID , 계좌번호 |
| 인스턴스 집합 | 2개 이상의 인스턴스가 있어야 한다 즉, 고객정보는 2명 이상 있어야 한다 |
| 속성 | Entity는 반드시 속성을 가지고 있다 ex) 고객 Entity에 회원ID , password , name , 주소 , 전화번호 |
| 관계 | Entity는 다른 Entity와 최소한 한 개 이상 관계가 있어야 한다 ex) 고객은 계좌를 개설한다 |
| 업무 | Entity는 업무에서 관리되어야 하는 집합이다 ex) 고객 , 계좌 |
TIP) relation and table , Instance
relation과 table은 같은 의미라고 해석하면 된다. relation에 기본키 및 제약조건을 설명하면 table이 된다.
단, 릴레이션쉽은 릴레이션 간의 관계를 의미한다
Instance는 릴레이션이 가질 수 있는 값을 의미한다. 간단하게 생각하면 행의 수를 의미한다
Entity 종류(p55)
Entity의 종류는 유형과 무형에 따른 종류, Entity가 발생하는 시점에 따른 종류로 나누어진다.
Entity를 유형과 무형으로 분류하는 기준은 물리적 형태의 존재 여부이다.
유형 Entity
- 업무에서 도출되며 지속적으로 사용되는 Entity이다
ex) 고객 , 강사 , 사원 등
개념 Entity
유형 Entity는 물리적 형태가 있지만, 개념 Entity는 물리적 형태가 없다.
개념적으로 사용되는 Entity이다
ex) 거래소 종목 , 코스닥 종목 , 생명보험 상품
사건 Entity
- 비즈니스 프로세스를 실행하면서 생성되는 Entity이다.
ex) 주문 , 체결 , 취소주문 , 수수료 청구 등
발생 시점에 따른 Entity 종류
기본 Entity
키 Entity라고도 한다
다른 Entity로부터 영향을 받지 않고 독립적으로 생성되는 Entity이다
ex) 고객 , 상품 ,부서 등
중심 Entity(메인 Entity)
기본 Entity와 행위 Entity 간의 중간에 있는 것이다
즉, 기본 Entity로부터 발생되고 행위 Entity를 생성하는 것이다
ex) 계좌 , 주문 ,취소 , 체결 등
행위 Entity
- 2개 이상의 Entity로부터 발생된다
ex) 주문 이력 , 체결 이력 등
속성
속성이라는 것은 업무에서 필요한 정보인 엔터티가 가지는 항목이다
속성은 더 이상 분리되지 않는 단위로, 업무에 필요한 data 를 저장할 수 있다
인스턴스의 구성요소이고 의미적으로 더 이상 분해되지 않는다
속성의 특징과 종류
속성은 업무에서 관리되는 정보이다
속성은 일반적으로 하나의 값만 가진다
주식별자에게 함수적으로 종속된다. 즉, 기본키가
분해 여부에 따른 속성의 종류(p57)
단일 속성
- 하나의 의미로 구성된 것으로 회원ID , 이름 등이다
복합 속성
여러 개의 의미가 있는 것으로 대표적으로 주소가 있다
주소는 시, 군, 동 등으로 분해될 수 있다
다중값 속성
속성에 여러 개의 값을 가질 수 있는 것으로 예를 들어 상품 리스트가 있다
상품
다중값 속성은 엔터티로 분해된다
특성에 따른 속성의 종류 (p58)
기본 속성
비즈니스 프로세스에서 도출되는 본래의 속성이다
ex) 회원ID , 이름 , 계좌번호 , 주문 일자 등
업무로 부터 축출한 속성으로 제일 많이 발생
설계 속성
데이터 모델링 과정에서 발생되는 속성이다
유일한 값을 부여한다
ex) 상품코드 , 일련번호 , 지점 코드 등
설계시 규칙화 등이 필요해 만든 속성 코드성이나 일련번호 등
파생 속성
다른 속성에 의해서 만들어지는 속성이다
ex) 합계 , 평균 등
TIP) Domain이란?
Domain은 속성이 가질 수 있는 값의 범위이다
ex) 성별이라는 속성의 Domain은 남자와 여자이다
주식별자(기본키, PK)
=>최대유불존
최소성
대표성
유일성
불변성
존재성
키의 종류(p63)
| 데이터베이스 키 | 설명 |
| 기본키 | 후보키 중에서 엔터티를 대표할 수 있는 키이다 |
| 후보키 | 호보키는 유일성과 최소성을 만족하는 키이다 |
| 슈퍼키 | |
| 대체키 | |
| 외래키 | 하나 혹은 다수의 다른 테이블의 기본 키 필드를 가리키는 것으로 참조 무결성을 확인하기 위해서 사용되는 키이다 즉, 허용된 데이터 값만 데이터베이스에 저장하기 위해서 사용된다 ex) 부서코드 , 상품코드 |
대표성 여부에 따른 식별자의 종류
주식별자
유일성
다른 엔터티
보조 식별자
- 유일성
생성 여부에 따른 식별자의 종류
내부 식별자
외부 식별자
Multi row Subquery(p135)
Multi row Subquery는 서브쿼리 결과가 여러 개의 행을 반환하는 것으로 다중 행 연산자를 사용해야 한다
다중 행 비교 연산자
| 다중 행 연산 | 설명 |
| IN | Main query의 비교조건이 Subquery의 결과 중 하나만 동일하면 참이 된다(OR 조건) |
| ALL | Main query와 Subquery의 결과가 모두 동일하면 참이 된다 <ALL : 최솟값을 반환한다 >ALL : 최댓값을 반환한다 |
| ANY | Main query |
| EXISTS | Main query와 Subquery의 결과가 하나라도 존재하면 참이 된다 |
차집합을 만드는 MINUS(p148)
MINUS 연산은 두 개의 테이블에서 차집합을 조회함
먼저 쓴 SELECT문에는 있고 뒤에 쓰는 SELECT문에는 없는 집합을 조회하는 것이다
MS-SQL에서는 MINUS와 동일한 연산이 EXCEPT이다(MINUS = EXCEPT)
EQUI(등가) & JOIN(교집합)
조인은 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만드는 과정이다
윈도우 함수 구조(p159)
ARGUMENTS(인수)
- 윈도우 함수에 따라서 0 ~ N개의 인수를 설정한다
PARTITION BY
- 전체 집합을 기준에 의해 소그룹으로 나눈다
ORDER BY
- 어떤 항목에 대해서 정렬한다
WINDOWING
행 기준의 범위를 정한다
ROWS: 물리적 결과의 행 수
RANGE: 논리적인 값에 의한 범위
GROUP BY와 윈도우 함수 차이점(p159)
| 구분 | GROUP BY | 윈도우 함수 |
| 기능 | 자르기와 집약 | 자르기 |
| 특징 | ||
| 차이점 | 행 수가 감소 | 행 수는 유지 |
WINDOWING(p160)
ROWS
- 부분집합인 윈도우 크기를 물리적
RANGE
- 논리적인 주소에 의해 행 집합을 지정한다
BETWWEN ~ AND
- 윈도우
UNBOUNDED PRECEDING
UNBOUNDED FOLLOWING
CURRENT ROW
순위 관련 윈도우 함수(p164)
RANK = 동일한 순위는 동일한 값이 부여
ex) 1 2 2 4
DENSE_RANK = 동일한 순위를 하나의 건수로 계산
ex) 1 2 2 3
ROW_NUMBER = 고유의 순위를 부여
ex) 1 2 3 4
집계 관련 윈도우 함수(p166)
SUM : 파티션 별로 합계를 계산한다
AVG : 파티션 별로 평균을 계산한다
COUNT : 파티션 별로 행 수를 계산한다
MAX & MIN : 파티션 별로 최댓값과 최솟값을 계산한다
행 순서 관련 윈도우 함수(p167)
FIRST_VALUE : 파티션에서 가장 처음에 나오는 값을 구한다
MIN 함수를 사용해서 같은 결과를 구할 수 있다
LAST_VALUE : 파티션에서 가장 나중에 나오는 값을 구한다
MAX 함수를 사용해서 같은 결과를 구할 수 있다
LAG : 이전 행을 가지고 온다
LEAD : 윈도우에서 특정 위치의 행을 가지고 온다
기본값이 1이다
Inline view(p172)
Inline view는 SELECT문에서 FROM절에 사용되는 서브쿼리를 의미한다
partition 기능(p184)
파티션은 대용량의 테이블을 여러 개의 데이터 파일에 분리해서 저장한다
테이블
파티션은
partition은
데이터를 조회할 때 데이터의 범위를 줄여서 성능을 향상시킨다
Range partition
- 값의 범위를 기준으로 여러 개의 파티션으로 데이터를 나누어 저장하는 것이다
List partition
- 특정 값을 기준으로 분할하는 방법이다
Hash partition
database 관리 시스템이 내부적으로 Hash 함수를 사용해서 data를 분할한다
database 관리 시스템이 알아서 분할하고 관리하는 것이다
Composite partition
- 여러 개의 파티션 기법을 조합해서 사용하는 것이다
Oracle 정규표현식
| 구분 | 의미 |
| REGEXP_LIKE | LIKE문과 유사하고 정규표현식을 검색한다 |
| REGEXP_REPLACE | 정규표현식을 검색한 후에 문자열을 변경한다 |
| REGEXP | 정규표현식을 검색하고 위치를 반환한다 |
| REGEXP | 정규표현식을 검색하고 |
| REGEXP | 정규표현식을 검색하고 |
테이블의 모든 데이터 삭제(p197)
DELETE FROM 테이블명;
테이블의 모든 데이터를 삭제한다
데이터가 삭제되어도 테이블의 용량은 감소하지 않는다
TRUNCATE TABLE 테이블명;
테이블의 모든 데이터를 삭제한다
데이터가 삭제되면 테이블의 용량은 초기화된다
TCL(p200)
COMMIT
- COMMIT은 INSERT
ROLLBACK
- ROLLBACK을 실행하면 데이터에 대한 변경 사용을 모두 취소하고 트랜잭션을 종료한다
SAVEPOINT(저장점)
- SAVEPOINT는 트랜잭션을 작게 분할하여
view 장단점(p211)
view란? (view = 가상 테이블)
장점: 보안 기능 , 데이터 관리 간단 , SELECT문이 간단
단점: 연산이 제약 , 구조를 변경할 수는 없다
GRANT(p212)
GRANT문은 DB 사용자에게 권한을 부여한다
DB 사용을 위해서는 권한이 필요하며 연결 , 입력 , 수정 , 삭제 , 조회를 할 수 있다.
WITH GRANT OPTION과 ADMIN OPTION(p213)
WITH GRANT OPTION
특정 사용자에게
권한을 A 사용자가 B에 부여하고 다시 B가 다시 C를 부여한 후에 권한을 취소(Revoke)하면 모든 권한이 회수된다
WITH ADMIN OPTION
Table에 대한 모든 권한을 부여한다
권한을 A