728x90
반응형
데이터 무결성(Data Intergrity)
- 데이터의 정확성, 유효성, 일관성을 유지하고 보증
- 데이터베이스나 RDBMS 시스템의 중요한 기능
- 데이터의 잘못된 입력, 수정, 삭제로부터 보호
- 입력한 데이터와 데이터베이스에 저장된 데이터 일치
- 데이터 무결성의 종류
유형 | 설명 |
개체 무결성 (Entity Intergrity) |
- 기본키(Primary Key) 열은 고유 - Null 값을 가질 수 없음 |
참조 무결성 (Reference Intergrity) |
- 외래키(Foreign)가 있는 테이블은 기본키와의 관계 유지 - 참조하는 외래키가 존재하면 기본키 변경이나 행 삭제 불가 |
영역 무결성 (Domain Intergrity) |
- 데이터 형태, 범위, 기본값, 유일성에 대한 제한 - 주어진 속성 값은 정의된 도메인에 속한 값 |
비즈니스 무결성 (Business Intergrity) |
- 사용자의 업무 특성과 규칙에 따른 제약 조건 - 제약조건, DEFAULT, TRIGGER 등의 사용자 정의 |
제약 조건 (Constraint)
- 정해진 규칙에 적합한 데이터만 입력 가능하고, 그 외에는 거부하여 무결성 유지
- 제약 조건의 종류
유형 | 설명 |
기본 키 제약조건 (PRIMARY KEY) |
- UNIQUE와 NOT NULL 조건 만족 - 테이블에서 각 행을 유일하게 식별하는 값 - 기본으로 NOT NULL, UNIQUE 제약이 포함 * 주키로 테이블당 1개만 생성이 가능하다. * 반드시 테이블당 하나의 제약만을 정의할 수 있다. |
외래 키 제약조건 (FOREIGN KEY) |
- 외래 키가 참조 열의 값을 반드시 참조해야 함 - 참조되는 열은 UNIQUE하거나 기본키 * 외래키로 테이블당 여러 개 생성이 가능하다. * 테이블 생성시 설정할 수 있다. * 외래키 값은 참조 무결성 제약을 받을 수 있다. * 외래키 값은 NULL 값을 가질 수 있다. * 테이블간의 관계를 정의하기 위해 기본키(PK)를 다른 테이블의 외래키가 참조하도록 생성한다. |
유일 키 제약조건 (UNIQUE) |
- 중복된 값을 허용하지 않음 - 유일한 값으로 존재 (null 값 허용 가능) * 테이블 내에서 중복되는 값이 없지만, NULL 입력이 가능하다. |
NOT NULL 제약 조건 (NOT NULL) |
- Null 값을 허용하지 않음 - 값을 반드시 입력해야 함 * 명시적으로 NULL 입력을 방지한다. |
CHECK 제약 조건 (CHECK) |
- 범위나 조건 등 지정된 값만 허용 - 개발자가 정의하는 제약 조건 * 데이터베이스에서 데이터 무결성을 유지하기 위하여 테이블의 특정컬럼에 설정하는 제약이다. |
- 기본키 제약조건 위반(PRIMARY KEY)
INSERT INTO regions
VALUES (3, 'Asia');
--명령의 1 행에서 시작하는 중 오류 발생 -
--INSERT INTO regions
--VALUES (3, 'Asia')
--오류 보고 -
--ORA-00001: 무결성 제약 조건(HR.REG_ID_PK)에 위배됩니다
INSERT INTO countries
VALUES ('AR', 'Argentina', 2);
--명령의 1 행에서 시작하는 중 오류 발생 -
--INSERT INTO countries
--VALUES ('AR', 'Argentina', 2)
--오류 보고 -
--ORA-00001: 무결성 제약 조건(HR.COUNTRY_C_ID_PK)에 위배됩니다
INSERT INTO locations
VALUES (1000, 'Street', 12345, 'Korea', null, 'KR');
--명령의 1 행에서 시작하는 중 오류 발생 -
--INSERT INTO locations
--VALUES (1000, 'Street', 12345, 'Korea', null, 'KR')
--오류 보고 -
--ORA-00001: 무결성 제약 조건(HR.LOC_ID_PK)에 위배됩니다
- 외래키 제약조건 위반(FOREIGN KEY)
SELECT *
FROM countries;
INSERT INTO countries
VALUES ('KR', 'South Korea', 5);
--명령의 1 행에서 시작하는 중 오류 발생 -
--INSERT INTO countries
--VALUES ('KR', 'South Korea', 5)
--오류 보고 -
--ORA-02291: 무결성 제약조건(HR.COUNTR_REG_FK)이 위배되었습니다- 부모 키가 없습니다
* REGION_ID 가 1, 2, 3, 4 까지 밖에 없음.
참조할 수 없는 5 에 대해 INSERT를 시도하게 되어 오류 발생
- 유일키 제약조건 위반(UNIQUE)
SELECT *
FROM employees;
INSERT INTO employees
VALUES(207, 'Minkyu', 'Cheon', 'SKING', '515,123.4567', '21/01/01',
'IT_PROG', 10000, null, null, null);
--명령의 1 행에서 시작하는 중 오류 발생 -
--INSERT INTO employees
--VALUES(207, 'Minkyu', 'Cheon', 'SKING', '515,123.4567', '21/01/01',
--'IT_PROG', 10000, null, null, null)
--오류 보고 -
--ORA-00001: 무결성 제약 조건(HR.EMP_EMAIL_UK)에 위배됩니다
- NOT NULL 제약조건 위반(NOT NULL)
SELECT *
FROM locations;
INSERT INTO locations
VALUES (3300, 'Street', 12345, null , null, 'US');
--명령의 1 행에서 시작하는 중 오류 발생 -
--INSERT INTO locations
--VALUES (3300, 'Street', 12345, null , null, 'US')
--오류 보고 -
--ORA-01400: NULL을 ("HR"."LOCATIONS"."CITY") 안에 삽입할 수 없습니다
- CHECK 제약조건 위반(CHECK)
SELECT *
FROM employees;
INSERT INTO employees
VALUES (207, 'Minkyu', 'Cheon', 'JAKE', '123.123.1234', '21/01/01',
'IT_PROG', 0, null, null, null);
--명령의 1 행에서 시작하는 중 오류 발생 -
--INSERT INTO employees
--VALUES (207, 'Minkyu', 'Cheon', 'JAKE', '123.123.1234', '21/01/01',
--'IT_PROG', 0, null, null, null)
--오류 보고 -
--ORA-02290: 체크 제약조건(HR.EMP_SALARY_MIN)이 위배되었습니다
728x90
반응형
'Language > RDBMS' 카테고리의 다른 글
[DDL] 명령어를 활용한 테이블 정의 (0) | 2023.03.04 |
---|---|
트랜잭션 및 병행(동시성) 제어 (0) | 2023.03.04 |
[DML-DELETE] 데이터 삭제 (0) | 2023.03.03 |
[DML_UPDATE] 데이터 변경 (0) | 2023.03.03 |
[DML_INSERT] 데이터 삽입 (0) | 2023.03.03 |