본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 34일차 -54

by oncerun 2020. 4. 19.
반응형

데이터 딕셔너리

오라클은 데이터베이스를 운영하기 위한 정보들을 모두 특정한 테이블에 모아 두고 관리하는데, 그 테이블을 데이터 딕셔너리라고 이야기합니다.

사용자 어떠한 테이블이 필요하다고 하면 DBMS는 데이터를 기억하고 있다가 제공해 주기 때문에 데이터 베이스는 사용자에게 서비스를 위한 데이터를 저장하고 있어야 합니다.

그래서 데이터 베이스는 사용자 정보, 권한,  TALBEL/ VIEW , 제약 조건, 함수/프로시저 등등을 저장하고 있어야 합니다.

우리가 데이터를 사용할 때 Data Dictionary에서 데이터를 찾아서 사용합니다.

또한 데이터를 수정해야 할 경우 사용자가 직접 수동으로 데이터 딕셔너리를 변경하지 못하고 해당 DDL 문장을 수행하는 순간 SERVER Process가 사용자를 대신해서 해당 딕셔너리 내용을 수정해 줍니다.

 

예전에는 콘솔 기반으로 데이터베이스에 접근했기 때문에 우리가 테이블을 만들었는지 어떠한 칼럼이 있는지 확인하기가 어려웠습니다. 하지만 요즘은 윈도 기반으로 만들어진 툴을 사용하면 쉽게 데이터 딕셔러리에 접근하기가 쉬워졌습니다.

만약 툴이 없었다면 우리는 데이터딕셔러리를 찾아서 데이터를 확인해야만 했습니다.

 

데이터 딕셔너리는 데이터를 view형태로 제공하고 있습니다.

view는 권한 밖에 있는 칼럼을 사용자가 볼 수 없게 은닉할 수 있으며 또한 여러 테이블을 묶거나 테이블의 몇 가지 칼럼을 확인할 때 접근할 수 있습니다. 

또한 뷰는 읽기 전용이기 때문에 사용자에게 읽기 전용으로 테이블을 제공할 수 있습니다.

 

oracle이 제공하고 있는 Data Dictionary를 확인해보겠습니다.

 

SELECT * FROM DICT; 쿼리문으로 확인할 수 있습니다.

Data Dictionary 뷰

DBA_(DB관리를 위해 사용되는~)

TABLES

TAB_COLUMNS

ALL_TABLES

TAB_COMMENTS

COL_COMMENTS

EXTERNAL_TABLES

EXTERNAL_LOCATIONS

TAB_HISTOGRAMS

TAB_STATICS

ALL_(모든~)
USER_(계정이 가지고있는~)

 

제약 조건

 

데이터를 입력을 할 때 제약 조건을 적용해 결함 없는 데이터베이스를 관리하기 위해 사용되는 옵션입니다.

 

1. 도메인

도메인이란?

칼럼 단위로 유효한 값의 범위를 잡아주는 것이 도메인 제약조건입니다.

 

속성에 도메인이 아닌 값이 올 수 없도록 하는 제약조건입니다.

 

NOT NULL  :필수적으로 입력값이 존재해야 합니다.

 

EX)

CREATE TABLE MEMBER

(

ID VARCHAR2(50) NOT NULL,

PASSWORD VARCHAR2(50) NOT NULL,

EMAIL VARCHAR2(200) NULL

)

 

INSERT INTO MEMBER(ID) VALUES("ID");

라고 작성 시 PASSWORD칼럼의 널값이 존재하므로 오류가 발생

 

하지만 요즘은 툴의 편집 기능을 이용해 간단하게 적용할 수 있습니다.

 

DEFAULT : 사용자가 아닌 기본값으로 들어올 수 있는 값입니다. 

EX)

CREATE TABLE MEMBER

(

ID VARCHAR2(50) NOT NULL,

PASSWORD VARCHAR2(50) NOT NULL,

EMAIL VARCHAR2(200) NULL,

NICKNAME VARCHAR2(40) DEFAULT '사용자'

)

NICKNAME의 기본값으로 사용자라는 값을 줍니다.

 

이미 테이블이 만들어져 있다면 ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME DATATYPE 제약조건;

ALTER를 사용해 수정해줄 수 있습니다.

 

CHECK : 도메인 범위를 확인할 수 있는 제약조건입니다.

값의 범위나 값의 형식이 알맞지 않으면 데이터 입력돼 않도록 하는 CHECK제약조건입니다.

즉 유효한 값이 들어와야 입력이 되도록 하는 제약조건입니다.

 

EX)

CREATE TABLE MEMBER

(

ID VARCHAR2(50) NOT NULL,

PASSWORD VARCHAR2(50) NOT NULL,

PHONE VARCHAR2(200) CHECK(PHONE LIKE '010-%-____') NOT NULL,

EMAIL VARCHAR2(200) NULL,

NICKNAME VARCHAR2(40) DEFAULT '사용자'

)

 

테이블이 생성된 이후 적용하기

ALTER TABLE TEST ADD CONSTRAINT CK_TEST_PHONE CHECK(PHONE LIKE~~);

 

툴을 이용하기

 

만약 제약조건을 적용하기 이전에 만들어진 데이터 형식이 CHECK제약조건에 만족하지 않는다면

제약조건을 걸 때 오류가 발생하므로 미리 생성된 데이터를 제약에 맞게 수정해주어야 합니다.

 

정규식을 이용한 CHECK조건 또한 가능합니다.

 

CHECK (REGEXP_LIKE(PHONE, '^010-\d {4}-\d {4}$')

 

반응형

댓글