Learn business/Database

    트리거(TRIGGER) & 내포된SQL

    트리거트리거는 명시된 이벤트(데이터베이스의 갱신)가 발생할 때마다 DBMS가 자동적으로 수행하는 프로시저(사용자가 정의하는 문)이다.트리거는 데이터베이스의 무결성을 유지하기 위한 일반적이고 강력한 도구이다. ECA규칙E(event) → C(condition) → A(action)의 약자이다.트리거를 명시하려면 트리거를 활성화시키는 사건인 이벤트, 트리거가 활성화되었을 때 수행되는 테스트인 조건, 트리거가 활성화되고 조건이 참일 때 수행되는 문(프로시저)인 동작을 표현해야 한다. 트리거의 단점트리거가 데이터베이스의 일관성을 유지하는데 매우 유용하지만 트리거를 과도하게 사용하면 복잡한 상호 의존성을 야기할 수 있다. 대규모 데이터베이스에서는 복잡한 상호 의존성을 관리하는 것이 어렵다.예를 들어, 하나의 트리..

    데이터 정의어

    ■ 데이터 정의어 1. 스키마의 생성과 제거• 일반적으로 스키마는 릴레이션, 도메인, 제약조건, 뷰, 권한 등을 그룹화한 것이다.• 각 사용자는 권한을 허가받지 않은 한 다른 사용자의 스키마에 속한 데이터를 볼 수 없다. CREATE SCHEMA MY_DB AUTHORIZATION CHOI; • 스키마 내에 릴레이션을 생성할 수 있다. 기존 스키마를 제거하려면 DROP을 사용한다. DROP SCHEMA MY_DB CASCADE CONSTRAINTS; 2. 릴레이션의 정의 그리고 제약조건 예시• 예시로 설명 CREATE TABLE EMPLOYEE ( EMPNO NUMBER NOT NULL, EMPNAME VARCHAR2(10) UNIQUE, TITLE VARCHAR2(10) DEFAULT '사원', MAN..

    SQL 개요

    ■ SQL• SQL은 IBM 연구소에서 1974년 System R이라는 관계 DBMS 시제품을 연구할 때 개발된 언어이다.• 왜 SQL이 필요할까?- 한글이나 영어와 같은 자연어는 너무 모호하기 때문에 복잡한 질의를 자연어로 표현하면 질의가 정확하게 표현되었는지 입증하기가 어렵다. 따라서 좀더 명확하고 구조적인 질의어가 필요했다. 그래서 SQL이 나왔는데 자연어에 가까운 구문을 사용해서 질의를 표현할 수 있다는 것이 장점이다.- SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나이다.- “만일 어떤 DBMS가 SQL을 사용하지 않는다면 그것은 관계 DBMS가 아니다.”란 말도 있다. - 이전에 관계 데이터 모델은 “사용자는 원하는 데이터(what)만 명시하고,..

    무결성 제약조건 정리

    ■ 무결성 제약조건• 데이터 모델은 데이터베이스 구조를 기술하는 데 사용되는 구성요소들의 집합으로 구조(데이터 타입, 관계), 그 구조 위에서 동작하는 연산자, 무결정 제약조건으로 이루어진다.• 데이터 무결성은 데이터의 정확도 또는 유효성을 의미한다.• 무결성 제약조건은 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적 또는 명시적으로 정의하는 것이다. 쉽게 말해서 데이터베이스 상태를 만족시켜야하는 조건이고, 사용자에 의한 데이터베이스 갱신이 데이터베이스의 일관성을 깨지 않도록 보장하는 수단이다.→ 프로그래밍 언어에서의 규칙은 서로 다른 데이터 타입의 데이터를 비교하거나 어떤 데이터 타입의 변수에 다른 데이터 타입의 변수를 배정하는 등의 작업을 제한한다. 이는 상용자가 일반적으로 무의미한 작업을 하지 ..

    식별관계와 비식별관계

    ■ 식별관계와 비식별관계 차이 • 부모테이블의 유니크 키나 기본 키로 지정된 컬럼이 자식테이블의 기본 키 컬럼과 연결된 경우 실선으로 표기되고 식별 관계라고 한다. • 부모테이블의 유니크 키나 기본 키로 지정된 컬럼이 자식테이블의 일반 컬럼과 연결된 경우 점선으로 표기되고 비식별 관계라고 한다. → 쉽게 이야기하면 부모 컬럼을 참조하는 자식 컬럼이 식별 (PK) 가능하면 식별 관계라고 하고 식별이 가능하지 않으면 비식별 관계라고 합니다. 즉, 자식 컬럼이 PK 인지 아닌지에 따라 식별 관계, 비식별 관계라고 이야기한다. (추가사항 ERD 모델 그리는 표기법 적기)

    릴레이션 키 총 정리

    ■ 릴레이션 키 총 정리• 릴레이션의 키는 각 투플을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트들의 모임이다.• 일반적으로 키는 두 릴레이션을 서로 연관시키는 데 사용된다.(RDB의 특징이다. 계층, 네트워크 데이터베이스는 레코드들로 서로 관계를 나타냄)• 릴레이션의 투플을 접근하는 속도를 높이기 위해 키에 인덱스를 만드는데, 키가 작을수록 인덱스의 크기가 줄어들고 인덱스를 검사하는 시간이 단축된다. 1. 수퍼 키• 수퍼 키는 한 릴레이션 내의 특정 투플을 고유하게 식별하는 하나의 애트리뷰트 또는 애트리뷰트들의 집합이다. • 신용카드 회사의 고객 릴레이션에서 (신용카드번호, 주소) 또는 (주민등록번호, 이름) 또는 (주민등록번호)는 모두 수퍼 키가 될 수 있다. • 또는 신용카드번호나 주민등록번호를..

    ANSI/SPARC 3단계

    ■ANSI/SPARC 3단계※ DBMS의 주요 목적은 사용자에게 데이터에 대한 추상적인 뷰를 제공하는 것이다. 즉, 데이터가 어떻게 저장되고 유지되는가에 관한 상세한 사항을 숨기고 있는 것이다. 현재 상용 DBMS 구현에서 사용되는 일반적인 아키텍처는 ANSI/SPARC 아키텍처이다.※ ANSI/SPARC 아키텍처의 주요 목적은 데이터 독립성을 제공하는 것이다. 데이터의 독립성은 논리적 데이터 독립성과 물리적 데이터 독립성으로 구분할 수 있다.※ 내부 단계에서 외부 단계로 갈수록 추상화 정도는 높아진다. 1. 외부 단계(각 사용자의 뷰) • 데이터베이스의 각 사용자가 갖는 뷰. 각 사용자가 어떻게 데이터를 보는가를 기술한다. • 대학교 데이터베이스에서 한 학과의 학과장은 학과의 예산과 학생들의 수강 정보..

    관계 데이터 모델

    ■ 관계 데이터 모델• E.F. Codd가 1970년에 관계 데이터 모델을 제안• 실세계의 동일한 구조(릴레이션)의 관점에서 모든 데이터를 논리적으로 구성하며 선언적인 질의어를 통한 데이터 접근을 제공한다. 응용 프로그램들은 데이터베이스 내의 레코드들의 어떠한 순서와도 무관하게 작성된다.• 사용자는 원하는 데이터(what)만 명시하고, 어떻게 이 데이터를 어떻게 찾을 것인가(how)는 명시할 필요가 없다.• 관계 데이터 모델은 논리적으로 연관된 데이터를 연결하기 위해서 링크나 포인터를 사용하지 않는다. 관계 데이터베이스 모델에서는 실세계에서 서로 다른 객체들을 연관시키는 것이 값들의 비교에 의해 이루어진다. 1. 관계 데이터 모델의 목적• 데이터베이스의 관리의 논리적인 면과 물리적인 면을 명확하게 구분하..

    DBMS의 언어

    • 데이터베이스를 구축하기 위해서 사용자는 먼저 데이터베이스 스키마를 정의한 후에 DBMS에서 제공하는 연산자들을 사용하여 데이터를 저장, 검색, 수정, 삭제하게 된다. 일반적으로 DBMS는 이와 같은 작업을 용이하게 하는 언어들을 제공한다. 1. 데이터 정의어(DDL: Data Definition Language) • 사용자는 데이터 정의어를 사용하여 데이터베이스 스키마를 정의한다. • 데이터 정의어로 명시된 문장이 입력되면 DBMS는 사용자가 정의한 스키마에 대한 명세를 시스템 카탈로그에 저장한다. ※ 시스템 카탈로그는 메타데이터-데이터베이스에 저장된 데이터에 관한 데이터-를 저장한다. • 데이터 구조를 생성(SQL에서 CREATE TABLE) • 데이터 구조를 변경(SQL에서 ALTER TABLE)..

    DBMS의 발전 과정

    • 60년대와 70년대: 계층 및 네트워크 DBMS(현재는 거의 쓰지 않음)• 80년대 초반: 관계 DBMS• 80년대 후반: 객체 지향 DBMS(OODBMS) = 객체 지향 프로그래밍 + 네트워크 DBMS• 90년대 후반: 객체 관계 DBMS(ORDBMS) = 객체 지향 DBMS + 관계 DBMS 1. 계층 DBMS • 트리 구조를 기반으로 하는 계층 데이터 모델 ※데이터 모델은 데이터베이스 구조를 기술하는데 사용되는 개념들의 집합을 뜻함. -> 구조(데이터 타입과 관계), 이 구조 위에서 동작하는 연산자들, 무결성 제약조건들로 이루어진다. -> 각 데이터 모델은 공통적인 목적을 가지고 있는데, 사용자들에게 내부 저장 방식의 세세한 사항은 숨기면서 데이터에 대한 직관적인 뷰를 제공하는 동시에 이들 간의..