데이터베이스 설계 | 4. 관계 데이터 모델의 제약과 조작문
2024년 5월 23일
1. SQL 데이터 조작문
-
데이터 검색(SELECT FROM WHERE)
- SELECT * : 최종으로 검색하고 싶은 속성(*은 모든 속성) FROM : 어떤 릴레이션으로부터 WHERE : 어떤 조건을 만족하는지
-
데이터 삽입(INSERT INTO VALUES)
- INSERT INTO : 해당 릴레이션에 삽입하겠다 VALUES : 값
- 테이블에 투플을 직접 삽입하는 방법(INSERT INTO, VALUES)
- 부속 질의문을 이용해 삽입하는 방법(INSERT INTO, SELECT, FROM, WHERE)
-
데이터 삭제(DELETE FROM WHERE)
- DELETE : 어떤 릴레이션으로부터(FROM) 어떤조건을(WHERE) 삭제
- TRUNCATE TABLE : 테이블자체는 그대로 두고 해당 테이블의 모든 행이 제거되고 저장공간을 재사용가능하게함 (스키마는 살아있고 인스턴스만 없어짐)
-
데이터 갱신(UPDATE SET WHERE)
- UPDATE : 어떤조건의(WHERE) 값을 어떻게 바꿔라(SET) 라고 어떤 릴레이션을 업데이트한다
-
데이터 갱신 : Case Statement
UPDATE 000 SET 0000 = CASE WHEN 0000 THEN 0000 ELSE 0000 END;
2. Integrity Constraints (ICs)
- IC : 데이터베이스의 모든 인스턴스에 대해 참이어야 하는 조건(예 : 도메인 제약 조건)
- IC는 스키마가 정의될 때 지정된다
- 관계가 수정될 때 IC가 확인된다
- 관계의 합법적인 인스턴스는 지정된 모든 IC를 만족하는 인스턴스이다
- DBMS는 불법 인스턴스를 허용하지 않아야 한다
- DBMS가 IC를 확인하면 저장된 데이터가 실제 의미에 더 충실해진다
- 데이터 입력 오류도 방지할 수 있다
3. Entity Integrity (개체 무결성)
- 개체 무결성
- 기본 테이블의 기본 키를 구성하는 어떤 속성도 NULL값을 가질 수 X
- PRIMARY KEY UNIQUE 대체키는 유일성만 만족하고 NULL이어도 됨
4. Referential Integrity (참조 무결성)
- 참조 무결성
- 외래 키 값은 NULL이거나 참조 릴레이션의 기본 키 값과 동일해야 함
- 즉, 릴레이션은 참조할 수 없는 외래 키 값을 가질 수 X
- 외래 키 : 다른 관계의 튜플로 재귀하는데 사용되는 한 관계의 필드 집합
- 외래 키를 넣는 명령어
- FOREIGN KEY 000 REFERENCES 000
5. Enforcing Referential Integrity (참조 무결성)
- 어떤 투플을 삭제하려면?
- 이를 참조하는 모든 등록된 튜플을 삭제
- 참조되는 어떤 튜플 삭제 허용 안 함
- 이를 참조하는 등록된 튜플의 000를 기본 000로 설정
- ‘알 수 없음’ 또는 ‘적용할 수 없음’ 을 나타내는 특수 값 null로 참조하는 어떤 튜플의 000를 설정
- 어떤 튜플의 기본 키가 업데이트된 경우에도 유사
6. Referential Integrity in SQL
- 삭제 및 업데이트에 대한 4가지 옵션 모두 지원
- 기본 값은 아무 조치 없음(Default is NO ACTION)
- 삭제/업데이트가 거부됨
- CASCADE : 삭제된 튜플을 참조하는 모든 튜플도 삭제
- SET NULL / SET DEFAULT
- 참조 튜플의 외래 키 값 설정
- SET DEFAULT를 지원하지 않는 DBMS도 있음
- Update 할 때는 SET DEFAULT
- 기본 값은 아무 조치 없음(Default is NO ACTION)
7. ADD/DROP Constraints
- 테이블 생성 시 제약 조건을 적용하지 않았다면, 생성 이후에 필요에 의해서 제약 조건을 추가할 수 있음
- ALTER TABLE 000 ADD CONSTRAINT 000 FOREIGN KEY 000 REFERENCES 000
- 테이블 생성 시 혹은 생성 이후에 부여했던 제약 조건을 삭제할 수 있음
- ALTER TABLE 000 DROP CONSTRAINT 000