반응형

 

 

 

1. 데이터베이스 설계 단계

 

1) 요구사항 분석

2) 개념적 설계 -> 개념적 스키마 생성

3) 논리적 설계 -> 논리적 스키마 생성

4) 물리적 설계

 

 

 

 

 

 

 

 

2. 개념적 설계

 

- 개념적 스키마 : 데이터베이스에 대한 추상적인 설계도

- 대표적인 개념적 모델 : 개체관계 모델(ERD), ER Schema 라고도 함

 

 

 

 

 

3. 논리적 설계 : 관계형 데이터 모델 

 

- 테이블 : 여러 데이터 도메인의 순서쌍(튜플)들의 집합

- 데이터베이스 : 테이블들의 집합

 

- 논리적 스키마 : 테이블 구조도

-> 개념적 설계 단계에서 생성된 ERD를 바탕으로 생성되는 테이블들의 집합

 

 

 

 

4. 물리적 설계

: 필드의 데이터 타입, 인덱스, 테이블 저장 방법 등 정의 (물리적 스키마 설계)

: 논리적 설계 단계에서 생성된 테이블 구조도에 따라 SQL create table 구문으로 각각의 테이블 생성

 

* 추가 고려 사항

: 인덱스 설정 여부, 기본키/외래키 설정 여부, 뷰 생성 등

 

 

 

 

5. 설계 과정에서 고려 사항

 

1) 충실성 : 현실 세계를 충분히 반영

2) 단순성 : 단순하고 이해하기 쉬운 구조로 표현

3) 중복의 최소화 : 저장공간의 효율적 사용, 데이터 일관성 유지

4) 제약조건의 표현

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

1. 사용자 계정 생성

 

CREATE USER LEE
IDENTIFED BY LEE_PASS
DEFAULT TABLESPACE USERS
QUOTA 2M ON USERS

 

: USERS - 오라클 설치 시 기본적으로 생성되는 테이블스페이스

 

 

2. SYSTEM 계정에서 LEE 에게 권한 부여

 

GRANT CREATE SESSION TO LEE;
GRANT CREATE TABLE TO LEE;

: CREATE SESSION - 데이터베이스 접속(로그인) 권한

: CREATE TABLE - 테이블 생성 권한

 

 

 

3. 오라클에서는 with grant option과 wit admin option 을 둘 다 지원한다.

 

WITH GRANT OPTION : 객체권한(DML)을 다른 사용자에게 전파할 수 있는 권한

WITH ADMIN OPTION : 시스템 권한을 전파할 때 사용

 

 

 

4. 오라클의 기본적인 롤(role) 종류

 

 

 

 

 

 

1) 롤 부여

 

 

 

 

2. 롤 생성하고 부여하기

 

 

 

 

3. 사용자로부터 롤을 회수

 

 

반응형
반응형

 

 

 

DBMS는 허가되지 않은 사용자, 즉 권한이 없는 사용자로부터의 데이터 접근을 차단한다.

 

1. 데이터베이스에서의 사용 권한

: 사용자가 데이터베이스 내의 특정 객체에 대해 특정 연산을 수행할 수 있는 권리

 

1) 특정 객체 - 테이블, 뷰, 필드, 저장 프로시저 등 데이터베이스의 구성 요소

2)특정 연산 - DML(SELECT, DELETE, INSERT, UPDATE) , DDL(CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX)

 

 

 

 

 

2. 권한에 따른 사용자 분류

 

1) 데이터베이스 관리자(DBA)

2) 객체 소유자(owner) : 생성한 객체에 대한 모든 권한 소유 (해당 객체에 대한 권한 부여나 회수도 가능)

3) 기타 사용자 : 기본적으로는 다른 사용자의 객체에 대한 어떠한 권한도 없음, 다만 객체 소유자나 DBA로부터 권한을 부여받을 수 있음

 

 

 

 

< SQL에서의 권한 제어 >

 

3. GRANT

: 권한을 부여하는 명령

 

 

1) 형식

 

 

<권한리스트> : SELECT, DELETE, UPDATE, INSERT, REFERENCES

 

 

 

 

 

2) 예시

 

 

 

 

 

 

3)

- REFERENCE 권한이란?

: 테이블을 외래키로 참조할 수 있는 권한 

: 권한이 없으면 student 테이블은 department 테이블을 참조할 수 없다.

 

 

 

- REFERENCE 권한 부여

 

: dept_id 는 테이블 department 의 기본키이다. 기본키만을 외래키로 참조할 수 있다.

 

 

 

 

 

 

 

4) 모든 사용자에게 권한 부여

 

 

 

 

5) 모든 종류의 권한을 하나의 명령으로 부여하는 방법

 

 

 

 

 

 

 

6) 부여받은 권한을 다른 사용자에게 전파할 수 있는 옵션

 

 

단, chang 은 더 이상 다른 사용자에게 권한을 부여할 수 없음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. REVOKE

: 다른 사용자에게 부여한 권한을 회수(취소)하기 위한 명령

 

: 이 경우, kim 뿐만 아니라 권한을 부여한 chang으로부터 자동적으로 권한을 회수함

 

 

 

 

 

 

 

 

 

 

 

5. ROLE(롤)

 

: 권한별로 사용자 그룹을 만들어 그룹에 권한을 부여하는 방법

: 롤은 데이터베이스 관리자만 생성 가능하다.

 

 

 

 

1) 롤 생성 형식 및 예시

 

 

 

 

2) 롤 배정 형식 및 예시

 

 

 

 

3) 롤에 권한 부여 ( GRANT문의 형식과 동일 )

 

 

 

 

4) 롤에 부여된 권한 회수

 

 

 

 

 

5) 배정된 롤에서 사용자 배제

 

 

 

 

 

 

6) 롤 삭제

 

 

 

 

 

 

 

 

 

6. 뷰를 이용한 권한 제어

: 특정 테이블에서 일부 필드 혹은 일부 레코드들에 대해서 접근을 허용할 경우 이 부분들을 뷰로 정의

 

 

: kim은 junior 에 대한 접근은 가능하지만, student 테이블 전체에 대한 접근은 불가하다.

 

반응형
반응형

 

 

 

1. 무결성 제약(integrity constraint) 또는 무결성 규칙(integrity rule)

 

: 데이터베이스에 저장된 데이터가 현실 세계에 존재하는 정보들을 모순 없이 반영하는 성질이다.

: 데이터베이스에 저장된 데이터가 갖추어야 할 제약 조건을 항상 만족하도록 보장하는 성질이다.

 

 

 

예시 )

 

 

 

 

 

2. 무결성 제약 조건을 충족시키기 위한 방법

 

1) 데이터를 삽입, 삭제, 수정할 때마다 사용자, 즉 응용 프로그램이 직접 주어진 무결성 제약의 만족 여부를 검증

 

2) 데이터베이스 설계자가 데이터베이스가 지켜야 할 무결성 제약들을 정의

: DBMS가 자동적으로 제약 조건을 검증하여 무결성을 보장해 줌

 

 

 

 

 

 

3. 무결성 제약의 유형

 

 

 

 

 

 

[ 기본적 무결성 제약 ]

 

 

1) 기본키 무결성 제약(primary key integrity constraint)

 

: 기본키는 null 값을 가질 수 없으며, 기본키의 값이 동일한 레코드가 하나의 테이블에 동시에 두 개 이상 존재할 수 없다.

 

 

 

일반적인 방법 )

 

-> 사용자가 기본키를 정의하여 테이블을 생성하면 기본키 무결성 제약은 DBMS에 의해 자동적으로 검증된다.

 

 

 

 

 

 

간단한 방법 )

 

- 기본키가 하나의 필드로 구성될 때만 가능하다.

- 제약에 이름이 부여되지 않아 추후에 기본키를 취소하거나 변경할 수 없다는 단점이 있다.

 

 

 

 

 

 

 

 

 

 

2) 참조 무결성 제약

 

: 한 테이블의 레코드가 다른 테이블을 참조할 때, 조되는 테이블에 해당 레코드가 반드시 존재하거나 null 값을 가져야 한다.

 

 

형식 ) 

 

 

예시 )

 

 

 

 

 

 

Q) 만약 테이블 생성 당시 외래키를 설정하지 않았고, 추가적으로 설정하고 싶다면?

A) ALTER 문으로 수정 가능

 

 

 

 

Q) 외래키 제약을 삭제하고 싶을 때에는?

A) alter table ~ drop constraint 문을 사용

 

 

 

 

 

 

 

 

[ 테이블의 무결성 제약 ]

 

- not null

- unique

- check

- default

 

 

 

 

1) NOT NULL

: 특정 필드에 대해 null 값 입력을 금지해야 하는 경우

 

 

 

참고 ) 기본키는 원래부터 null 값을 허용하지 않으므로 기본키로 정의된 필드에 대해서는 Not null 조건을 입력하지 않아도 됨

 

 

 

 

2) UNIQUE

: 해당 필드가 테이블 내에서 중복된 값을 갖지 않고 반드시 유일한 값을 갖도록 하는 제약 조건

 

 

 

 

 

 

** 두 개 이상의 필드에 동시 설정 가능하다.

: 두 필드 각각의 값이 유일해야 한다는 의미가 아니다. 아래의 경우에 이름과 성이 동시에 같은 경우에 대해 중복을 허용하지 않는다는 의미이다.

 

 

 

 

- unique 제약을 추가하거나 해제할 때 alter table 를 이용한다.

 

 

 

 

 

 

 

3) CHECK

: 각 필드의 값은 정의된 도메인에 속한 값만 허용한다.

: 필드를 정의할 때 주어진 데이터 타입 이외에도 좀 더 세부적으로 허용할 수 있는 값의 범위를 지정할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

** 제약에 이름을 부여하지 않거나 각 필드에 대한 조건식을 분리하여 명시 가능하다.

-> 

 

 

 

- chek 제약을 추가하거나 해제할 때

 

 

 

 

 

 

 

4) DEFAULT

 

: 레코드를 삽입할 때, 필드에 대한 값이 정해지지 않을 경우 사전에 정해놓은 값이 입력되도록 디폴트 값을 설정

 

 

 

 

 

- default 제약을 추가 혹은 해제하고 싶을 때

 

 

 

 

 

 

- 오라클만의 default 설정 및 해제 방법

 

 

 

 

** 지나치게 많은 제약조건이 존재할 경우 많은 데이터가 입력될 때 문제가 생길 수 있다.

 

 

 

 

 

 

< 기타 무결성 제약 >

 

 

1) Assertion (주장)

 

 

 

 

2) 응용 프로그램에서의 무결성 제약

 

: 개발자가 응용 프로그램에서 직접 무결성을 보장하는 코드 작성

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

1. 뷰(View) 란?

기존 테이블로부터 생성(정의)되는 가상의 테이블

- 기반 테이블들에 대한 하나의 질의문(query)으로 정의된다.

( but 실제로 질의를 실행하는 것은 아님 ! 질의 그 자체가 뷰임. 물리적인 저장공간 없음)

- 뷰는 기반 테이블과 동등하게 사용된다.

 

< 기능 >

- 특정 사용자에게 테이블 내용 중 일부를 숨길 수 있기 때문에 데이터에 대한 접근 제한과 보안성을 높일 수 있다.

- 질의의 결과를 뷰로 만들어서 사용하면 복잡한 질의를 간단히 표현할 수 있다.

 

 

 

 

2. 뷰 생성 방법

 

 

- <SELECT문> : 뷰 생성에 사용될 질의문

- OR REPLACE 를 추가하면 <뷰이름> 과 같은 뷰가 이미 존재하는 경우, 기존의 뷰를 삭제하고 새로 생성한다.

 

 

 

 

 

3. 뷰 생성 권한

: 대부분의 DBMS에서 일반 사용자 계정에서는 뷰 생성 권한이 없다.

: 관리자가 특정 사용자에게 권한을 부여해야 뷰를 생성할 수 있다.

 

 

 

 

 

 

 

 

4. 직접 실습해보기

- SQLDevelper 에서 실습해 보기로 하자

 

1) localhost(관리자 계정) 에서 scott(사용자 계정)으로 뷰 생성 권한을 부여한다.

 

 

 

 

 

2) V_TAKES 라는 이름의 뷰 생성하기

 

 

 

참고) TAKES 테이블은 이렇게 생겼다.

 

 

 

 

 

3) v_takes 뷰를 이용하여 특정 학번의 학생 정보를 검색

 

 

 

 

질의결과)

 

 

 

5) INSERT문도 실행시켜보기

 

 

 

실행결과)

 

 

 

 

Q) 원래 TAKES 테이블에도 값이 추가가 될까?

A) Yes! 추가되지 않은 GRADE 열의 값은 null 이 들어간다. 아래 결과 확인

 

 

 

 

 

 

 

 

5. 읽기 전용 뷰

: INSERT, DELETE, UPDATE 와 같은 데이터 조작 언어(DML)의 사용을 막고 싶을 때에는 

WITH READ ONLY 키워드를 추가해준다. (SELECT 는 가능)

 

 

 

 

 

 

 

 

6. 뷰 삭제

 

 

 

7. 실습해보기 두번째

 

- 컴퓨터공학과 학생들의 정보만 추출하여 뷰를 생성한다.

 

 

** 문제발생) 기본키인 dept_id 가 select 되지 않았기 때문에 insert문을 실행시킬 수 없다.

 

 

 

 

 

 

 

반응형
반응형

 

 

 

 

1. 에러 검출

 

- 데이터 링크, 네트워크, 전송 계층 모두 에러 검출을 위한 동작 수행

- 각 계층에서 사용하는 방식이 서로 다를 수 있음

- 일반적 에러 검출 기법인 "패리티 사용 기법"만 다루기로 하자

- NIC는 CRC 코드를 생성하고 이를 통해 에러 발생을 검출함

 

2. 에러 검출 및 정정

 

- 에러 검출을 위해서는 추가적인 데이터를 전송 데이터와 함께 보내줘야 함

 

- 가장 간단한 에러 검출 알고리즘 : 패리티 비트

- 수신 데이터의 에러 검출 후 에러를 정정하는 방식도 존재

: 비용이 많이 들어 잘 쓰이진 않음

: 에러 정정을 위한 알고리즘 : 해밍 코드

: 일반적으로는 에러 검출만 하고 다시 데이터를 재전송시킴으로써 에러에 대응함

 

3. 에러 검출 - 1차원 패리티

 

- 패리티 비트 : 보낼 비트 패턴에 1비트를 추가하여 전송 에러를 검출

* 단, 에러가 홀수 개 발생했을 때만 검출 가능하다

- 짝수 패리티 : 1의 개수가 짝수가 되도록 패리티를 지정

- 홀수 패리티 : 1의 개수가 홀수가 되도록 패리티를 지정

- 송신 호스트와 수신 호스트는 동일한 패리티 방식을 사용해야 함

 

- ASCII 코드의 MSB를 패리티 비트로 사용할 수 있음

- 수신 측은 MSB를 에러 체크에서만 이용하고, MSB를 다시 0으로 바꿔서 사용

 

ex ) 짝수 패리티

패리티 비트 외의 비트들이 짝수이면 0, 홀수이면 1을 대입한다.

첫 비트가 패리티 비트 / 11101011 / 01101001

 

 

4. 에러 검출 - 2차원 패리티

 

- 1차원 패리티는 짝수 개의 에러 검출 불가

- 수평, 수직 방향 모두에 패리티 비트를 지정

- 짝수 개의 비트가 깨지는 오류도 검출 가능 (항상 검출한다는 의미는 아님)

 

- 오버헤드가 1차원 패리티 비트 기법에 비해 크다

- 수평, 수직 방향 모두에서 사각형 형태로 발생한 짝수 개의 집단 오류는 검출 못함

 

 

5. 체크섬

 

- 주어진 디지털 데이터에 대해 미리 정해진 계산을 통해 일정한 길이의 작은 크기 데이터를 생성

- 이를 체크섬 이라고 함

- 주어진 데이터 D에 대해 체크섬 함수를 적용하여 값을 얻어냄. 즉, 체크섬을 계산함

 

< 체크섬 함수 >

- 동일한 데이터에 대해서 항상 동일한 체크섬이 나옴

- CF(D) = CF(D) 인게 당연한데, D에 오류가 발생했을 경우 동일한 체크섬값이 나오지 않을 것이므로 오류 검출이 가능하다

- 데이터 D를 일정한 크기로 나누고, 나눈 데이터들을 더하는 방식

 

< 체크섬 예 >

- 두 통신 entity N1, N2가 서로 통신한다고 가정

- N1과 N2는 체크섬 함수 CF()를 공유

- 전송 (D, CF(D)) -> N2

- N2는 받은 데이터에 대해 원래 알고있던 CF()함수로 다시 체크섬 계산

- 새로 계산된 체크섬 값과 수신한 체크섬 값이 일치하지 않으면 에러 발생으로 판단

 

* 단, 값이 일치한다고 해서 항상 에러가 없었다고 단정할 수는 없다. 독립 변수가 틀려도 종속 변수가 같게 나올 수 있기 때문이다.

 

 

6. Hash 함수

 

- 입력 데이터 m에 대해 일정한 길이의 비트 스트림으로 대응시킴

- H(m) -> S

- m의 길이는 정해지지 않은 것임

 

- 좋은 해시 함수는 m != m' 일 때, f(m) != f(m') 의 결과를 보이는 것임

- S가 클수록 충돌 현상이 줄어듦

- Y값을 안다고 해서 X값을 알 수 있는 것은 아님

 

- 널리 쓰이는 해시 알고리즘으로는 MD5와 SHA-1

- 체크섬 함수도 해시 함수 중 하나라고 할 수 있음

- 비트코인 채굴 과정에서도 해시 함수가 사용됨

 

< 충돌 가능성 >

- 2비트 : 1/2의 2승

- 16비트 : 1/2의 16승

반응형

+ Recent posts