개발자 끄적끄적

무결성 제약 본문

데이터 베이스

무결성 제약

햏치 2023. 4. 7. 01:26

<기본적 무결성 제약의 보장>
- 기본키 무결성 제약
- 참조 무결성 제약


<테이블 무결성 제약의 보장>
- NOT NULL
- UNIQUE
- CHECK
- DEFAULT



<오라클에서의 사용자 권한 제어>
- 오라클의 권한 종류
  - 시스템 권한(System privileges)
    - 사용자의 생성, 테이블이나 테이블 스페이스의 생성 등과 같이 주로 시스템의 자원을 관리할 수 있는 권한
    - 데이터베이스 관리자 계정(sys, system)은 모든 시스템 권한을 가진다

- 객체 권한(object privileges)
  - 해당 객체에 대해 select, insert, delete, update 등과 같은 DML을 실행 할 수 있는 권한
  - 객체
    - 테이블이나 뷰 또는 사용자 정의 함수 등



<오라클의 대표적인 시스템 권한>
1. 사용자
- create user : 사용자 계정을 생성할 수 있는 권한
- drop user : 사용자 계정을 삭제하는 권한

2. 세션
- create session : 데이터베이스 접속(로그인)권한

3. 테이블
- create table : 테이블을 생성할 수 있는 권한
- drop any table : 임의의 테이블을 삭제하는 권한
- select any table : 임의의 테이블에 대한 읽기 권한

4. 뷰
- create view : 뷰를 생성할 수 있는 권한
- drop any view : 임의의 뷰에 대한 삭제 권한

5. 테이블 스페이스
- create tablespace : 테이블 스페이스를 생성하는 권한
- drp tablespace : 테이블 스페이스에 대한 삭제 권한

6. 롤
- create role : 롤을 생성할 수 있는 권한
- drop any role : 임의의 롤을 삭제하는 권한



<사용자 계정 생성과 GRANT>
- 사용자 계정 생성 예
  - system 계정에서 실행
  - lee : 사용자 ID
  - lee_pass : 비밀번호
  - users : default tablespace, users는 오라클 설치 시 기본적으로 생성



<사용자 계정 생성과 GRANT>
- 사용자 생성 후 권한을 부여해야한다
- 권한 없이 로그인을 할 경우의 예
  ERROR : user LEE lacks CREATE SESSION privileges ; logon denied

- ex) lee에게 create session과 create table 권한을 부여(system 계정에서)
  grant create session to lee
  grant create table to lee

- 사용자 lee는 로그인과 테이블 생성에 대한 권한을 부여받았으므로 로그인이 가능하며 동시에 테이블 생성도 가능



<테이블에 대한 권한의 부여와 회수 예>
1. system 계정으로 로그인을 한 후에 다음과 같이 kim이란 계정을 추가로 생성하고 권한을 부여
(질의 61)
create user  kim
identified by  kim_pass
default tablespace users
quota 2M on  users

grant create session to kim

grant create table to kim

2. lee로 로그인을 하여 student 테이블과 department 테이블을 생성하고, 레코드들을 삽입

- lee로 로그인 한 후에 kim에게 student 테이블에 대한 select 권한을 다음과 같이 부여
  grant select on student to kim

- kim으로 로그인하여 student 테이블에 대한 select연산을 실행
  conn kim/kim_pass
 
  select stu_id
  from lee.student
- 다른 사용자가 소유한 테이블에 대해 테이블 이름을 명시할 때는 '소유자명.테이블명' 과 같이 테이블 이름 앞에 소유자명까지 기입



<WITH GRANT OPTION의 실행 예>
- chang이라는 계정을 생성했다고 가정
- lee 계정으로 로그인을 한 후에 kim에게 student 테이블에 대한 select권한을 부여
  grant select on student to kim with grant option  (lee가 실행)

- kim으로 로그인하여 chang에게 전파
  grant select on lee.student to chang (kim 실행)

- chang으로 로그인하여 student 테이블에 대한 select 명령 실행 가능



<REVOKE>
- lee가 kim에게 부여된 revoke문을 이요하여 권한을 회수
  revoke select on student from kim

- 간접적으로 권한을 부여 받은 chang에게도 자동적으로 권한을 회수한다



<참고 : with grant option 과 with admin option>
- 오라클에서는 with grant option과 with option을 모두 지원

- with grant option
  - 객체 권한을 다른 사용자에게 전파할 떄 사용

- with admin option
  - 시스템 권한을 전파할 때 사용
  - ex) grant create table to kim with admin option



<롤의 생성과 관리>
- 오라클의 기본적인 롤 종류
  - 오라클에서 권한의 종류는 200여개
  - 롤의 사용이 필수적
  - 오라클에서 사전에 정의된 기본 롤

1. connect : 사용자가 데이터베이스에 접속할 수 있는 기본적인 시스템 권한
- 권한 종류 : create session 

2. resource : 사용자가 객체를 생성하고 관리할 수 있는 시스템 권한
- create table
- create trigger
- create procedure
- create cluster
- create sequence
  
3. DBA : 시스템 및 객체 관리에 대한 모든 권한
- 데이터베이스 관리자 권한

- ex) park에게 connect와 resource 권한을 부여
  grant connect, resource to park



<롤의 생성과 사용자 배정>
- 롤 생성
  - create role문은 데이터베이스 관리자 또는 데이터베이스 관리자로부터 롤을 생성하는 권한을 부여 받은 사용자만이 실행
  ex) create role stu_role

- student 테이블이 소유자가 lee라고 가정
  - system 계정에서 다음을 실행
  ex) grant select, insert on lee.student to stu_role
  ex) grant stu_role to park

- 롤에서 사용자 배제
  - ex) stu_role에 배정된 park을 다음과 같이 revoke문으로 배제
  revoke stu_role from park (sys 계정)

'데이터 베이스' 카테고리의 다른 글

물리적 저장구조와 인덱스  (0) 2023.04.23
사용자 권한  (0) 2023.04.07
SQL문법  (0) 2023.03.28