목차
1. 뷰 (View)
1-1 뷰
1-2 View 생성 및 옵션
1-3 Inline View
2. 시퀀스 (Sequence)
2-1 시퀀스
2-2 시퀀스 실습
3. 모델링
3-1 모델링 개요
3-2 관계
3-3 erWIN을 이용한 테이블 생성
1. 뷰 (View)
1-1 뷰
실제로 데이터는 테이블에서 검색하지만 어플리케이션 개발자같은 사람들은 테이블에 액세스해 복잡한 작업을 수행할 수 없기 때문에 뷰를 테이블처럼 이용해 데이터를 검색한다.
뷰는 테이블을 보게 해주는 창문과 같은 역할로, 메모리를 차지하지 않는다. 보통 select 할 때만 사용한다.
보안에 도움이 될 수 있으나 실제로 보안 용도로 쓰는 경우는 없다.
● 뷰의 종류
- 단순 뷰
: DML 문장 수행이 가능하다.
- 복합 뷰
: 다중 테이블이나 수식 등이 포함된 뷰이다.
● 뷰 생성
CREATE [OR REPLACE][FORCE | NOFORCE] VIEW 뷰 (컬럼... )
AS (SELECT 문장: sub query)
[WITH CHECK OPTION [CONSTRAINT constrant_name]]
[WITH READ ONLY [CONSTRAINT constrant_name]];
뷰를 실행시키면 실제로는 내부의 서브 쿼리가 동작한다.
WITH 옵션들은 insert, update, delete 가 수행 가능한 뷰일 때만 사용되어 실제로 쓸 일은 거의 없다.
- OR REPLACE
: ALTER VIEW를 대체한다. 뷰는 ALTER 개념이 없어 수정하고 싶을 때 create or replace로 다시 생성한다.
: 세그먼트가 아니다.
- FORCE
: 기반 테이블 없이 뷰를 생성한다.
- WITH CHECK OPTION
: 뷰에 의해서 검색 가능한 행만 DML 작업이 가능하도록 제약한다.
- WITH READ ONLY
: 뷰를 통해서는 SELECT만 가능하도록 제한한다.
● 뷰 삭제와 확인
DROP VIEW 뷰;
SELECT view_name, text FROM user_views;
- text
: 뷰 생성 서브 쿼리이다.
: LONG 타입으로 where에 검색 용도로 쓸 수 없다.
※ 뷰 생성 주의 사항
뷰를 생성할 수 있는 'CREATE VIEW' 권한이 보통은 RESOURCE, CONNECT 롤에 포함되어 있지 않으므로 사용자에게 반드시 해당 권한을 할당해야 한다.
1-2 View 생성 및 옵션
● 뷰 생성
ex) 일반화학 과목의 학과별 기말고사 평균을 뷰로 생성한다.
SQL> CREATE VIEW ma_result(과목번호, 과목명, 학과, 기말고사평균)
2 AS SELECT c.cno, cname, major, ROUND(AVG(result))
3 FROM student s, course c, score r
4 WHERE s.sno = r.sno AND r.cno =c.cno
5 AND cname ='일반화학'
6 GROUP BY c.cno, cname, major;
SQL> SET LONG 1000 // 1000 byte까지 출력
SQL> SELECT view_name, text FROM user_views;
SQL> DESC ma_result;
SQL> SELECT * FROM ma_result;
● WITH CHECK 옵션
select 외의 dml 문장 수행이 가능한 뷰에 사용 가능하다.
SQL> CREATE VIEW st_ch
2 AS SELECT sno, sname, syear, avr
3 FROM student
4 WHERE syear = 1;
SQL> INSERT INTO st_chVALUES ('000001', '시현', 2, 4.0);
SQL> SELECT * FROM student WHERE sname = '시현';
SQL> SELECT * FROM st_chWHERE sname = '시현'; // 검색되지않는다.
뷰에 보이지 않는 행도 뷰를 통해 입력될 수 있다.
1-3 Inline View
● 인라인 뷰 (Inline View)
데이터베이스 관리자들이 현장에서 즉시 검색해야 할 때 자주 사용한다.
검색보단 데이터베이스 관리 작업에 많이 사용한다.
SELECT ...
FROM (SELECT 문장 : sub query) [별명]
- 인라인 뷰는 FROM절에 쓰인 서브쿼리다.
- 인라인 뷰는 문장이 실행되는 동안만 존재하는 뷰이다.
- 인라인 뷰는 일반 뷰와 동일하게 조인이나 검색에 이용된다.
ex) 각 부서별 최소 급여자를 검색한다.
SQL> SELECT eno, ename, d.dno, sal, msal
2 FROM emp e,
3 (SELECT dno, MIN(sal) msal FROM emp
4 GROUP BY dno) d
5 WHERE e.dno = d.dno
6 AND sal = msal;
2. 시퀀스 (Sequence)
2-1 시퀀스
● 시퀀스 생성과 수정
CREATE [| ALTER] SEQUENCE 시퀀스이름
[ START WITH 시작_값 // 기본값: 1
INCREMENT BY 증가_값 // 기본값: 1
MAXVALUE [상한값| NOMAXVALUE] // 기본값: NOMAXVALUE
MINVALUE [하한값| NOMINVALUE] // 기본값: NOMINVALUE
CYCLE | NOCYCLE // 기본값: NOCYCLE
CACHE [cache_개수| NOCACHE] ]; // 기본값: 20
- START WITH : 할당을 시작하는 값을 정의한다.
- INCREMENT BY : 생성되는 값의 증가치를 결정한다.
- MAXVALUE : 생성될 상한값을 정의한다.
- MINVALUE : 하한값을 정의한다.
- CYCLE : 상한값까지 생성한 이후 다시 하한값부터 재생성할 것인지 여부이다.
- CACHE : 메모리에 미리 생성될 값의 개수를 정의한다.
● 시퀀스 삭제와 확인, 사용
DROP SEQUENCE 시퀀스;
SELECT sequence_name, max_value, min_value, increment_by,
cache_size, last_number, cycle_flag
FROM user_sequences;
......시퀀스.NEXTVAL ......
......시퀀스.CURRVAL ......
- NEXTVAL : 시퀀스로부터 유일한 값을 할당받는다.
- CURRVAL : 시퀀스로부터 마지막으로 할당받은 값을 다시 할당받는다.
- 주로 INSERT문의 VALUES절이나 UPDATE의 SET절에서 많이 사용된다.
2-2 시퀀스 실습
● 시퀀스 생성
시퀀스를 생성하고 설정을 검색한다.
SQL> CREATE SEQUENCE emp_eno_seq
2 START WITH 1
3 INCREMENT BY 1
4 NOMAXVALUE
5 NOMINVALUE
6 NOCYCLE
7 CACHE 20;
SQL> CREATE SEQUENCE dept_dno_seq;
SQL> SELECT sequence_name, max_value, min_value, increment_by,
2 cache_size, last_number, cycle_flag
3 FROM user_sequences;
emp_eno_seq와 같이 모두 기본값으로 설정한다면 dept_dno_seq와 같이 생성하면 된다.
● 시퀀스 이용
emp table에 시퀀스를 이용해서 행을 입력한다.
SQL> INSERT INTO emp (eno, ename)
2 VALUES (emp_eno_seq.nextval, '첫번째');
SQL> SELECT emp_eno_seq.currval FROM dual;
SQL> ROLLBACK;
SQL> SELECT sequence_name, max_value, min_value, increment_by,
2 cache_size, last_number, cycle_flag
3 FROM user_sequences;
- 롤백 작업 수행 시 시퀀스에 갭이 생긴다.
- 롤백 작업을 수행하지 않아도 오라클은 알아서 갭을 만들기도 한다.
3. 모델링
3-1 모델링 개요
모델링이란 기업이나 조직의 정보 구조를 개체와 관계를 중심으로 체계적으로 표현하고 문서화하는 기법이다.
정보 시스템의 중심을 데이터 관점에서 접근하는 분석 방법으로, 다음 4가지 구성 요소를 가진다.
- 개체 (Entity) : DB에서는 테이블을 나타낸다.
- 관계 (Relationship) : DB에서는 foreign key로 관계를 설정한다.
- 속성 (Attribute) : DB에서는 컬럼을 나타낸다.
- 식별자 (Identifier) : 보통 주식별자를 의미한다.
위의 구성요소로 모든 정보를 파악할 수 있도록 한다.

논리 모델링 과정: 모델링 시 개체, 속성 등으로 표현하여 만든다.
물리 모델링 과정: 모델링 시 테이블 명, 컬럼 명 등으로 표현하여 만든다.

3-2 관계
● 관계 표현 요소

먼저 양측에 위의 모든 관계 요소를 그려놓고 지워나가며 최종 결과로 부모 자식 관계를 확립한다.

관계 표현 그림의 첫 번째 표현과 세 번째 표현은 테스트의 용이함을 위해 'o'를 추가하여 표현하기도 한다.
3-3 ERwin을 이용한 테이블 생성
ERwin data modeler에서 새 파일을 생성 시 logical/Physical 타입으로 설정하고 파일을 생성한다.

모델링 실습 시 사용할 항목은 다음의 6가지 항목으로 모델러 화면의 상단에 위치해 있다.

- 왼쪽에서 2번째 항목으로 테이블을 생성한다.
- 우측 3가지 항목으로 테이블 간의 관계를 설정한다.
- 실선은 *식별관계, 점선은 *비식별관계를 설정한다.
*식별관계 : 외부 식별자가 주식별자에 있는 관계
*비식별관계 : 외부 식별자가 일반 속성에 있는 관계
테이블 간 관계를 설정했을 때, 비식별관계의 경우 다음과 같이 'Nulls Allowed' 설정이 되어있어 부모와 자식 양 측에 'o' 표시가 되어있음을 확인할 수 있다.

자식이 받을 데이터가 부모에게 없을 수 없으므로 다음과 같이 'No Nulls' 설정을 하여 부모 측의 'o' 표시를 지운다.

이처럼 비식별관계는. 'Nulls Allowed'에서 'NO Nulls'로 반드시 설정해 주어야 한다.
'일일 정리' 카테고리의 다른 글
PHP - 오라클 DB 연동, 논리 모델링 구성 (0) | 2025.03.24 |
---|---|
정규화와 모델링, 논리 모델링 구성, PHP - 오라클 DB 연동 (2) | 2025.03.22 |
semi-project 기업 네트워크 환경 구축 (0) | 2025.03.19 |
제약 조건: (UK, NOT NULL, CHECK), 제약 조건 관리 - 추가 삭제와 비활성화, 인덱스 구조와 이해 (0) | 2025.03.19 |
테이블 생성과 데이터 타입(DDL), 테이블 관리, 제약 조건 : PK, FK (0) | 2025.03.18 |