웹찢남

Database - 7일차 본문

Database

Database - 7일차

harry595 2021. 2. 2. 18:06

Create Assertion

  • 관계 모델의 기본적인 제약조건 들을 제외한 추가적인 제약조건들을 명시할 때 사용.

  • 위의 경우는 고용자의 월급이 노동자의 월급보다 낮을 경우는 없어야한다는 제약 조건이다.
  • DB 전체에 대해 CHECK 문 뒤에는 참이 와야함
  • constraints 에 이름을 붙이는 것은 modify,alter,delete가 가능하기 때문이다.
  • DB 전체에 적용된다 (어떤 테이블의 특정 row에만 적용되는게 아님)

Create Trigger

  • 어떤 이벤트와 조건이 발생했을 때 데이터베이스 시스템이 수행할자동적인 동작
  • FOR Handling general Events
  • ON <event> IF <condition> THEN <action>
  • Event → 실행할 동작 request
  • Condition → db의 state에 대한 평가
  • Action → 절차 수행

Trigger Details

  • Trigger에 BEFORE과 AFTER로 발동 시간을 선택을 할 수 있다.

Trigger IN MYSQL

  • ACTION of BEFORE TRIGGER은 DB를 바꿀 수 없다.
  • only one trigger per event type (BEFORE INSERT OR UPDATE 이런걸 못함)
  • Limited trigger Chaining

아래의 방식으로 이루어짐

 

위에서 N은 새로 추가될 row를 뜻함

 

UPDATE같은 경우 update 전의 tuple을 Old라하고 바뀐꺼를 New라함

VIews in SQL

  • Schema element임 assertion,trigger,table 같이
  • 외부적인 schema인데 virtual table이라고 생각하면 됨
  • view에 대한 update가 limit됨

  • 위처럼 VIEW를 쓸 수 있음 효율성 향상
  • 위의 VIEW처럼 column 명을 지정할 수 있음
  • Table처럼 DROP VIEW xxxx; 를 할 수 있다.
  • 실습 결과 아래처럼 Views 영역에 따로 테이블이 생겼다. 캐시처럼 사용한다고 생각하면 좋을듯

  • 또한 아래처럼 INSERT 문과 UPDATE문이 적용되지 않음!

  • 결국 table 처럼 사용하면 안되고 그냥 query를 할 때 임시로 사용하는 temporary view table이라 생각하면 됨
  • View가 기반으로하던 table이 업데이트되면 자동으로 업데이트
  • WITH CHECK OPTION 이 있는데 뷰의 조건식을 만족하는 데이터만 INSERT 또는 UPDATE가 가능 하도록 하는 옵션 이다.

Access Control

  • DB는 중요한 정보를 들고 있음
  • 그래서 access를 제한해야함 - 보통 비밀번호로 식별

이에 대한 방법으로 보통 아래와 같이 GRANT를 씀

Grant와 View를 합쳐 사용할 수 있음

View에 unauthorized user에게 특정 attributes와 tuple을 숨기는 역할로 View를 사용할 수 있음 그 후 GRANT를 해당 view table에 access로 쓰면 됨

ALTER

ALTER Table Command는 column을 추가하거나 drop할 수 있고 column def를 바꿀 수 있고 constraints를 추가하거나 drop할 수 있다.

 

DROP

drop을 할 때 cascade나 Restrict를 사용할 수 있음

  • cascade는 외래키(Foreign key)로 물린 하위 테이블들 까지 함께 삭제된다.
  • restrict는 참조하는 뷰나 제약조건이 있으면 실행 실패

'Database' 카테고리의 다른 글

Database - 6일차  (0) 2021.02.02
Database - 5일차  (0) 2021.02.02
동읍면 DB 만들기  (0) 2020.11.11
Database - 4일차  (0) 2020.10.26
Database - 3일차  (0) 2020.10.07
Comments