DATABASE

[DATABASE][데이터의 무결성]

우주 코더 2018. 4. 19. 15:21


데이터의 무결성

  

행을 구별한다?

슈퍼키는 상관과계로 이뤄 져야 한다 

유일성이 만족해야 슈퍼키다 

유일성과 최소성을 만족해야후보키다

부모 생성하고 자식 테이블을 만들 어야한다 



*관계형 데이터베이스


-임의의 데이터베이스 내에 존재하는 여러 테이블들이 서로 관계를 가지며 운영되는 것을 의미한다.

-데이터베이스의 테이블 간의 관계를 분명하게 설정하고, 제약조건들을 사용하여 정확한 데이터들을 설정하는 것이다.


(Key)

-열쇠는 무언가를 열거나 잠글 때 사용 하는 것으로, 같은 것이 하나도 없다.

이와 같이 키(Key)라는 것은 무언가를 식별하는 고유한 식별자(identifier) 기능을 

한다.

-즉, 키는 데이터베이스에서 조건에 만족하는 관계의 행을 찾거나 순서대로 정렬할 때 다른 행과 구별할 수 있는 유리한 기준이 되는 속성의 집합이다.


(키(Key)의 종류로는 기본키, 슈퍼키, 후보키, 대체키, 외래키 등이 있다.)


슈퍼키(super key) : 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합 이다 

후보키(candidate key) : 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합이다.

대체키(alternate key) : 후보키가 두 개 이상일 경우 그 중에서 어느 하나를 기본키로 지정하고 남은 후보키들대체키이다. 대체키는 기본키로 선정되지 않은 후보키를 의미한다.


슈퍼키

유일성을 만족해야 슈퍼키다


후보키

유일성과 최소성을 만족해야 후보키다

대체키

기본키를 제외한 후보키들이 대체키다


-무결성이란?

데이터베이스에 저장된 값들이 정확하고 일관성 있는 데이터임을 나타내는 의미

데이터베이스는 무결성이 보장되도록 여러 개체에 규정을 부여하여 운영한다.

제약조건

제약조건(constraint)은 결점이 없이 정확하고 유효한 데이터가 데이터베이스에 저장될 수 있도록 하기 위하여 데이터를 조작하는데 한계를 규정한 것이다.






-CONSTRAINT


제약조건(constraint)

Constraint는 제약조건을 설정할 때 쓰인다.

Constraint 뒤에 제약조건의 id를 설정할 수 있다.

Constraint 를 생략할 시 제약id를 자동으로 생성해준다.


Constraint 제약id 제약내용(COLUMN );


 무결성




*도메인 무결성

-속성이 정의되어 있는 영역을 벗어나지 않도록 규정하는 것

) CHECK, DEFAULT, NOT NULL


-CHECK 제약

값의 범위를 정해 놓는 제약.

CHECK 제약을 사용해서 조건에 맞는 데이터만 입력 받을 수 있다


DEFAULT 제약

입력 값을 지정하지 않았을 때 열의 값이 기본값으로 입력되도록 지정하는 값




NOT NULL 제약

NULL을 허용하지 않기 때문에 반드시 값이 입력되어야 한다.


개체 무결성

-하나의 테이블에 중복된 레코드가 존재하지 않도록 규정하는 것, 기본키 제약이라고도 부른다.

ex) UNIQUE, PRIMARY KEY


-UNIQUE

값의 중복을 허용하지 않는 제약.

고유제약은 값이 유일해야 하는 제약이기 때문에 NULL도 한번만 입력가능



-PRIMARY KEY(기본 키, 주키)

열에 유일한 값만 입력 되도록 제약을 주는 것으로 NULL값을 허용하지 않음

UNIQUE NOT NULL이 합쳐진 것


-PRIMARY KEY(기본 키, 주키)



-참조 무결성

행을 입력, 수정, 삭제할 때 연관되는 다른 테이블과의 데이터가 정확하게 유지되도록 규정하는 것  (자식이 부모것을 참조한다 )

ex) FOREIGN KEY


-FOREIGN KEY

다른 테이블의 데이터를 참조할 때 없는 값을 참조할 수 없도록 제약을 주는 것

참조될 테이블이 먼저 만들어지고 값이 입력되어야 한다. 이때, 참조될 열의 값은

참조될 테이블에서 PRIMARY KEY로 설정되어 있어야한다.

(부모가 있어야 하 고 과계를 맺고 즉 외부의 키를 갖고 올수 있는 것 공통 칼럼이 있어야 하고 부 모가 프라이 머리키)






DICTIONARY


-스키마, 사용자, 객체, 권한, , 데이터베이스의 정보 등등, 오라클 데이터베이스를 운영하는데 필요한 정보를 관리하는 별도의 객체들을 일컫는다.

-Data Dictionary 기본 테이블과 뷰의 두가지 형태가 있는데, 기본 테이블은 데이터베이스에 관한 정보를 갖고 있는 테이블로 오라클 서버만

 기록할 수 있고 데이터가 은폐되어 있으므로 사용자가 직접 접근할 수 없다.

-뷰는 기본 테이블의 내용을 보여주는 방식으로, 사용자는 뷰를 마치 테이블 처럼 사용할 수 있다.



자신이 생성한 테이블의 정보 검색하기

DESC USER_TABLES;


현재 유저가 생성한 테이블 목록 보기

SELECT TABLE_NAME FROM USER_TABLES ORDER BY TABLE_NAME DESC;


현재 유저의 테이블의 제약조건 보기

 DESC USER_CONSTRAINTS;


현재 유저가 생성한 특정 테이블의 제약조건 보기

 SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME = ‘테이블명’;


TABLE LEVEL




약 변경


TEST 테이블을 새로 만들고

NUM NUMBER, NAME VARCHAR2(20) 컬럼을 추가 

, 제약 조건을 아무것도 넣지말것


제약 추가(ADD)



 ALTER TABLE 테이블명 ADD CONSTRAINT 제약 이름 제약 조건(컬럼명);

제약 수정(MODIFY)




ALTER TABLE 테이블명 MODIFY 컬럼명 컬럼조건;



제약 삭제(DROP)



ALTER TABLE 테이블명 DROP CONSTRAINT 제약이름;

키 이름 설정 안 했을 때 제약삭제

테이블 제약조건 검색





제약 비활성


제약 조건을 삭제하지 않고도 제약 조건을 비활성화하여 사용을 잠시 보류할 수 있도록 하는 기능이다.

ALTER TABLE 테이블명 DISABLE CONSTRAINT 제약조건;

ALTER TABLE 테이블명 ENABLE CONSTRAINT 제약조건;




CASCADE CONSTRAINTS


-데이터베이스 내의 임의의 다른 테이블과 PRIMARY KEY 또는 FOREIGN KEY 로서의 관계가 여전히 존재하는 경우 PRIMARY KEY가 

존재하는 테이블을 마음대로 제거할 수 없다.

-이럴 경우 삭제하는 방법으로 CASCADE가 쓰인다.

<기본형식>

DROP TABLE 테이블 이름 CASCADE CONSTRAINTS;


-제약 조건 삭제하기