1. SELECT문의 기능 (사영:射影, 선택, 결합)

SELECT문은 관계형 데이터베이스에서 데이터를 조회하는 가장 기본적인 명령어이다. SELECT문의 주요 기능은 사영(Projection), 선택(Selection), 결합(Join) 세 가지로 나뉜다.

  • 사영(Projection): 테이블에서 필요한 열(Column)만 선택하여 조회하는 기능
    • SELECT column1, column2 FROM table_name;
    • 예제: SELECT name, age FROM employees; (이름과 나이만 조회)
  • 선택(Selection): 특정 조건을 만족하는 행(Row)만 조회하는 기능
    • SELECT * FROM table_name WHERE condition;
    • 예제: SELECT * FROM employees WHERE department = 'HR'; (HR 부서의 직원만 조회)
  • 결합(Join): 두 개 이상의 테이블을 연결하여 데이터를 조회하는 기능
    • SELECT * FROM table1, table2 WHERE table1.id = table2.id;
    • 예제: SELECT e.name, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id; (직원과 부서 정보 결합 조회)

2. SELECT문의 기본 구문

오라클 SQL의 SELECT문 기본 형식은 다음과 같다.

SELECT [DISTINCT] 컬럼명  
FROM 테이블명  
[WHERE 조건]  
[GROUP BY 그룹핑할 컬럼]  
[HAVING 그룹핑 조건]  
[ORDER BY 정렬할 컬럼];  

예제:

SELECT DISTINCT department_id  
FROM employees  
WHERE salary > 5000  
ORDER BY department_id DESC;

3. SQL문 작성 규칙

  • 오라클 SQL은 대소문자를 구별하지 않는다. (SELECT와 select는 동일)
  • SQL 문장은 ;(세미콜론)으로 끝나야 한다.
    • SQL*Plus, SQLcl 등에서는 ;이 필요하지만, 일부 툴에서는 없어도 실행됨
    • PL/SQL 블록에서는 /이 필요
    • 일반적인 SQL 문은 ;이 없어도 실행될 수 있지만, 여러 개의 SQL 문이 있을 경우 구분을 위해 필요함
  • 문자열 및 날짜 리터럴은 싱글쿼트('') 를 사용해야 한다. ('2024-01-01')
  • 별칭(Alias)을 사용할 때 공백이 포함되면 큰따옴표("") 로 감싸야 한다.

4. 산술 연산자

오라클 SQL에서 지원하는 기본적인 산술 연산자는 다음과 같다.

연산자 의미 예제

+ 덧셈 SELECT salary + 1000 FROM employees;
- 뺄셈 SELECT salary - 500 FROM employees;
* 곱셈 SELECT salary * 1.1 FROM employees;
/ 나눗셈 SELECT salary / 2 FROM employees;

5. NULL 값 처리

  • NULL 값이 포함된 산술 연산: NULL 값이 포함되면 연산 결과도 NULL이 된다.
    SELECT salary + NULL FROM employees; -- 결과: NULL
    
  • 문자열 연결 연산자(||)와 NULL: NULL 값이 포함되면 문자열로 처리된다.
    SELECT 'Employee: ' || name || ' (ID: ' || NULL || ')' FROM employees;
    -- 결과: 'Employee: John (ID: )'  
    

6. 연결 연산자

  • || (문자열 연결 연산자): 두 개 이상의 문자열을 연결할 때 사용
    SELECT first_name || ' ' || last_name AS full_name FROM employees;
    
  • 결과 예시: John Doe, Jane Smith

7. 리터럴

  • 오라클 SQL에서 리터럴(literal) 은 숫자, 문자열, 날짜 등의 고정된 값 을 의미한다.
  • 문자 리터럴 및 날짜 리터럴: 싱글 쿼트(')로 감싼다.
    SELECT 'Hello, World' FROM dual;  
    SELECT TO_DATE('2024-02-09', 'YYYY-MM-DD') FROM dual;
    

열(Column) 이름 규칙

  • 열 이름은 기본적으로 대문자로 표시되며, SQL 실행 시 별칭을 지정하지 않으면 자동으로 대문자로 변환된다.
  • 숫자 데이터는 오른쪽 정렬되며, 문자와 날짜 데이터는 왼쪽 정렬된다.

인용부호(" vs q 대체 인용 부호)

  • 큰따옴표("): 열 이름 또는 별칭에 공백이나 특수문자가 포함될 경우 사용
    SELECT "Employee Name" FROM employees;
    
  • 대체 인용 부호 q: 문자열 내에 '(싱글쿼트)를 포함해야 할 때 사용
    SELECT q'[I'm a Developer]' FROM dual;
    -- 결과: I'm a Developer
    

8. DISTINCT 키워드

  • DISTINCT는 중복을 제거하고 유일한 값만 출력할 때 사용
    SELECT DISTINCT department_id FROM employees;
    

DISTINCT vs UNIQUE 차이점

  • DISTINCT는 조회 시 중복 제거, UNIQUE는 제약 조건으로 사용됨.
    -- DISTINCT 사용 예제 (중복 제거)
    SELECT DISTINCT job_id FROM employees;
    
    -- UNIQUE 사용 예제 (제약 조건)
    CREATE TABLE test_table (
        id NUMBER UNIQUE,  -- 중복 허용 안 함
        name VARCHAR2(50)
    );
    

9. iSQL*Plus

iSQL*Plus란?

  • 오라클에서 제공하는 SQL 실행 도구 중 하나
  • 웹 기반 인터페이스로 SQL 문을 실행하고 결과를 볼 수 있음

인터페이스 구성 화면

  • SQL 입력 창, 실행 결과 창, 명령 버튼 등이 포함됨

스크립트 로드

  • @ 또는 START 명령어를 사용하여 SQL 스크립트를 실행 가능 
  • @C:\sql_scripts\query.sql;

이력 페이지

  • 실행했던 SQL 문장의 기록을 관리하여 다시 실행 가능

iSQL*Plus
iSQL*Plus

 

관계형 데이터베이스

1. 관계형 데이터베이스의 데이터 격납 형식

  • 테이블(Table): 데이터를 행(Row)과 열(Column)로 저장하는 기본 단위
  • 레코드(Record): 테이블의 한 행, 하나의 데이터 항목을 의미
  • 필드(Field): 테이블의 한 열, 속성을 나타냄
  • 키(Key): 데이터를 고유하게 식별하기 위한 값 (기본키, 외래키 등)
  • 인덱스(Index): 검색 성능을 향상시키기 위해 사용되는 데이터 구조

2. 관계형 데이터베이스의 특징

  • 데이터 무결성(Integrity): 데이터의 정확성과 일관성을 유지
  • 데이터 독립성(Independence): 논리적 구조와 물리적 구조가 독립적으로 관리됨
  • 데이터 중복 최소화(Minimal Redundancy): 동일한 데이터를 여러 곳에 저장하지 않음
  • 데이터 일관성(Consistency): 트랜잭션 수행 후에도 데이터가 일관성을 유지
  • 데이터 보안(Security): 접근 권한을 통해 데이터 보호

3. E-R 모델의 주요 컴포넌트

  • 엔터티(Entity): 데이터를 저장하는 기본 단위 (예: 학생, 수강 과목)
  • 속성(Attribute): 엔터티가 가지는 특성 (예: 학생의 이름, 학번)
  • 관계(Relationship): 두 개 이상의 엔터티 간의 연관 (예: 학생과 강의의 수강 관계)

4. SQL의 분류

  • DML(Data Manipulation Language, 데이터 조작 언어): 데이터를 조회, 삽입, 수정, 삭제
    • SELECT, INSERT, UPDATE, DELETE
  • DDL(Data Definition Language, 데이터 정의 언어): 데이터 구조를 정의
    • CREATE, ALTER, DROP, TRUNCATE
  • DCL(Data Control Language, 데이터 제어 언어): 데이터 접근 권한 제어
    • GRANT, REVOKE
  • TCL(Transaction Control Language, 트랜잭션 제어 언어): 트랜잭션 관리
    • COMMIT, ROLLBACK, SAVEPOINT

5. 관계형 모델의 구성요소

  • 릴레이션(Relation): 테이블 형태로 데이터 저장
  • 튜플(Tuple): 테이블의 한 행 (레코드)
  • 애트리뷰트(Attribute): 테이블의 한 열 (필드)
  • 도메인(Domain): 애트리뷰트가 가질 수 있는 값의 범위
  • 키(Key): 데이터를 식별하는 속성 (기본키, 후보키, 외래키 등)

6. 오라클 인스턴스와 오라클 서버

  • 오라클 서버(Oracle Server): 데이터베이스를 관리하는 시스템
  • 오라클 인스턴스(Oracle Instance): 데이터베이스를 운영하는 메모리와 프로세스 집합
    • SGA(System Global Area): 데이터 캐싱 및 SQL 실행을 위한 공유 메모리
    • 백그라운드 프로세스: 데이터베이스를 운영하는 데 필요한 프로세스 집합

7. SQL의 정의

  • SQL(Structured Query Language, 구조화된 질의 언어)
    • 관계형 데이터베이스에서 데이터를 관리하기 위한 언어
    • 데이터를 저장, 수정, 삭제, 검색하는 기능 제공
    • ANSI 표준을 따르지만 DBMS별 차이가 존재

 

1. SQL 개요

1) SQL의 역사

  • 유래: SEQUEL(Structured English Query Language) → SQL로 발전
  • 연혁:
    • 1974: IBM System R 관계형 DBMS 연구 중 개발
    • 1986: ANSI에서 표준으로 채택(SQL-86)
    • 1992~1999: 주요 개정 버전 등장 (SQL-92, SQL3 등)
  • DBMS 호환성: Oracle, MySQL, MS SQL 등 다양한 DBMS에서 사용. 다소 차이 존재

2) SQL의 특징

  • 자연어에 가까운 비절차적 언어
  • 관계 대수와 해석보다 높은 표현력
  • 표준화를 통해 DBMS 간 전환 용이
  • 대화식 SQL과 내포된 SQL 지원
  • 레코드 단위 처리

3) SQL의 수행

  • SQL문 입력 → 관계 DBMS가 번역 후 처리 수행
  • 데이터베이스 접근 인터페이스:
    • 대화식 SQL: 최종 사용자 대상
    • 내포된 SQL: 응용 프로그램에 삽입

4) SQL 구성 요소

  1. 데이터 정의어(DDL): 테이블/뷰/인덱스 생성 및 제거
  2. 데이터 조작어(DML): 데이터 검색, 삽입, 삭제, 갱신
  3. 데이터 제어어(DCL): 권한 부여, 트랜잭션 관리

SQL의 구성요소


2. 데이터 정의어(DDL)

1) 데이터 정의어의 종류

  • CREATE: 테이블, 뷰, 도메인 생성
  • DROP: 테이블, 뷰, 도메인 제거
  • ALTER: 테이블 구조 변경

데이터 정의어의 종류

2) 스키마 생성 및 제거

  • 스키마 생성:
     
    CREATE SCHEMA MY_DB AUTHORIZATION KIM;
  • 스키마 제거:
     
    DROP SCHEMA MY_DB RESTRICT; DROP SCHEMA MY_DB CASCADE;

3) 테이블 생성

  • 기본 형식:
     
    CREATE TABLE 테이블_이름 ( 열_이름 데이터_형식 [NOT NULL | UNIQUE | DEFAULT | CHECK],
    PRIMARY KEY (열_이름),
    FOREIGN KEY (열_이름) REFERENCES 테이블_이름(열_이름)
    );
  • 데이터 타입 (SQL-92):
    • INTEGER, SMALLINT, REAL, FLOAT, CHAR, VARCHAR, DATE, BLOB 등
    • 데이터 타입
  • 도메인 생성:
     
    CREATE DOMAIN DEPTNAME CHAR(10) DEFAULT '개발' CONSTRAINT VALID_DEPT CHECK (VALUE IN ('영업', '총무', '기획', '개발'));
  • 도메인 제거:
     
    DROP DOMAIN DEPTNAME;

4) 테이블 제거(DROP)

  • 형식:
     
    DROP TABLE 테이블_이름 [RESTRICT | CASCADE];

5) 테이블 변경(ALTER)

  • 열 추가:
     
    ALTER TABLE 테이블_이름 ADD 열_이름 데이터_형식;
    열 추가
  • 열 삭제:
     
    ALTER TABLE 테이블_이름 DROP COLUMN 열_이름;
    열 삭제

3. 무결성 제약조건

1) 주요 제약조건

  • NOT NULL: 속성값이 반드시 존재해야 함.
  • UNIQUE: 속성값이 유일하도록 보장.
  • DEFAULT: 기본값 지정.
  • CHECK: 속성값의 유효 범위 지정.
  • PRIMARY KEY: 기본키 정의로 개체 무결성 보장.
  • FOREIGN KEY: 참조 무결성 제약조건 정의.

2) 기본 예시

무결성 제약조건

4. 테이블 생성 사례

  • 학생, 과목, 수강 릴레이션:
    • 학생 테이블:
       
      CREATE TABLE STUDENT (
          SNO INTEGER NOT NULL PRIMARY KEY,
          SNAME CHAR(10)
      );
    • 과목 테이블:
       
      CREATE TABLE COURSE (
          CNO CHAR(5) NOT NULL PRIMARY KEY,
          CNAME CHAR(20)
      );
    • 수강 테이블:
       
      CREATE TABLE ENROLL (
          SNO INTEGER,
          CNO CHAR(5),
          GRADE CHAR(2),
          PRIMARY KEY (SNO, CNO),
          FOREIGN KEY (SNO) REFERENCES STUDENT(SNO),
          FOREIGN KEY (CNO) REFERENCES COURSE(CNO)
      );

 

1. 조인 연산자

1.1. 조인의 정의

조인은 두 릴레이션에서 조건에 따라 관련된 튜플을 결합하는 연산으로, 데이터베이스에서 가장 중요한 연산 중 하나.

1.2. 조인의 유형

  1. 세타 조인 (Theta Join)
    • 조건식에 {=, <>, <, >, <=, >=} 등의 연산자를 사용.
    • 예: R ⋈ (R.Attribute θ S.Attribute) S
  2. 동등 조인 (Equi-join)
    • 세타 조인의 한 형태로, 조건식이 =일 때 사용.
    • 결과: 조건을 만족하는 튜플들의 조합.
    • 동등 조인
  3. 자연 조인 (Natural Join)
    • 동등 조인 후, 중복 속성을 제거.
    • 주로 릴레이션 간 관련 데이터를 연결하는 데 사용.
    • 예: R ⋈N S
      • 중복된 속성은 하나만 유지.
    • 자연 조인
  4. 외부 조인 (Outer Join)
    조인 실패 시에도 튜플을 포함하며, NULL 값을 추가.
    • 왼쪽 외부 조인: 왼쪽 릴레이션의 모든 튜플 포함.
    • 오른쪽 외부 조인: 오른쪽 릴레이션의 모든 튜플 포함.
    • 완전 외부 조인: 양쪽 릴레이션의 모든 튜플 포함.
    • 왼쪽 외부 조인


    • 완전 외부 조인
  5. 세미 조인 (Semijoin)
    • 조인 결과에서 필요하지 않은 속성을 미리 제거하여 효율성 증가.
    • 예: R ⨝ S
      • S에서 필요한 속성만 선택 후 R과 조인.
    • 세미 조인


  6. 정리
    • 조인 연산자


    • 조인 연산자

2. 디비전 연산자 (Division Operator, ÷)

2.1. 정의

릴레이션 R과 S에서 S에 포함된 모든 튜플과 관련된 R의 튜플만 반환.

2.2. 사용 예시

  • R의 속성: (A, B)
  • S의 속성: (B)
  • R ÷ S의 결과는 R에서 속성 A를 반환하며, S의 모든 튜플과 매칭된 경우만 포함.
    • 디비전 연산자

2.3. 응용

  • 학생과 과목 데이터에서, 특정 과목을 수강한 학생 목록을 구할 때 사용.
  • 예:
    • 릴레이션 학번(Sno)과 과목번호(Cno)
    • R ÷ S 연산으로 모든 과목(Cno)을 이수한 학생(Sno)을 구함.
    • 디비전 연산자

사례 연구

1. 세타 조인 예시

릴레이션 EMPLOYEE와 DEPARTMENT를 DNO = DEPTNO 조건으로 조인:

세타 조인

 

2. 외부 조인 예시

도서 릴레이션과 출판사 릴레이션의 왼쪽 외부 조인:

외부 조인

 

정리

  • 조인 연산자는 데이터베이스에서 릴레이션 간의 관계를 표현하고 연결하는 데 필수적.
  • 디비전 연산자는 특정 조건을 만족하는 릴레이션을 구할 때 유용.
  • 실무에서는 주로 자연 조인외부 조인이 많이 활용됨.

 

1. 관계데이터연산의 이해

  • 정의: 원하는 데이터를 얻기 위해 릴레이션에 연산 수행.
  • 종류:
    • 관계대수: 절차적 언어(How, What)로, SQL의 이론적 기초.
    • 관계해석: 비절차적 언어(What)로, 원하는 데이터만 명시.

2. 관계대수의 개념

  • 릴레이션을 처리하는 연산 집합으로, 새로운 릴레이션 생성.
  • 연산의 성질:
    • 단일/두 릴레이션을 입력으로 받아 결과 릴레이션 반환.
    • 폐쇄성: 결과 릴레이션은 다른 연산의 입력으로 사용 가능.
  • 관계 연산자

3. 관계대수 – 일반 집합 연산자

  • 연산 종류:
    1. 합집합 (∪): 두 릴레이션의 모든 투플 반환.
    2. 교집합 (∩): 두 릴레이션 모두에 속한 투플 반환.
    3. 차집합 (-): 첫 번째 릴레이션에만 속한 투플 반환.
    4. 카티션 곱 (×): 두 릴레이션의 모든 조합 반환.
      1. 카티션 곱
  • 특성:
    • 합집합, 교집합, 차집합은 합병 가능성이 필요.
    • 합병 가능성: 두 릴레이션의 차수와 대응 속성 도메인이 같아야 함.

4. 관계대수 – 순수 관계 연산자

  • 릴레이션 특성과 구조를 활용해 연산 수행.
  • 연산 종류:
    1. 셀렉션 (SELECTION, σ): 조건에 맞는 투플 선택.
    2. 프로젝션 (PROJECTION, π): 선택된 속성(열)만 추출.
    3. 조인 (JOIN): 두 릴레이션의 조건에 따라 결합.
    4. 디비전 (DIVISION, ÷): 특정 조건에 맞는 릴레이션 반환.

핵심 요점

  • 관계대수는 데이터 검색 및 처리의 이론적 기초.
  • 집합 연산자와 순수 관계 연산자로 구성.
  • 연산은 SQL과 같은 데이터 언어에서 사용되는 핵심 개념.

1. 릴레이션(Relation)의 개념

1) 수학적 정의

  • 릴레이션: 카티션 프로덕트(Cartesian Product)인 D1×D2××Dn 의 부분집합
    • n-투플: , di Di
  • 차수(degree): 릴레이션의 속성 개수
  • 카디널리티(cardinality): 릴레이션의 투플(행)의 수

2) 개념적 정의

  • 릴레이션 스키마: 릴레이션의 구조와 속성 이름 정의
    • 표기법: 릴레이션이름(속성1, 속성2, ..., 속성N)
    • 정적 성질 (내포, Intension)
  • 릴레이션 인스턴스: 특정 시점의 릴레이션 데이터를 의미
    • 삽입, 삭제, 갱신에 따라 동적으로 변화 (외연, Extension)

2. 릴레이션의 특성

  1. 투플의 유일성:
    • 릴레이션 내에 동일한 투플이 존재할 수 없음.
    • 키(key)를 통해 보장.
  2. 투플의 무순서성:
    • 투플들의 순서는 중요하지 않음.
  3. 애트리뷰트(속성)의 무순서성:
    • 애트리뷰트 순서가 다르더라도 동일 릴레이션으로 간주.
  4. 속성의 원자성:
    • 각 속성 값은 더 이상 분해되지 않는 원자 값이어야 함.
  5. 기타:
    • 하나의 릴레이션은 한 가지 레코드 타입만 포함.
    • 속성의 데이터 타입은 동일해야 함.
    • 속성 이름은 릴레이션 내에서 고유해야 함.

3. 릴레이션의 키

1) 키의 정의

  • 릴레이션에서 투플을 고유하게 식별할 수 있는 속성(또는 속성 집합).

2) 키의 유형

  1. 수퍼키(Super Key):
    • 투플을 고유하게 식별할 수 있는 속성 집합.
    • 유일성을 만족하지만 최소성을 보장하지 않음.
    • 예: (회원번호, 주민등록번호), (회원번호, 등급)
  2. 후보키(Candidate Key):
    • 투플을 고유하게 식별하는 최소한의 속성 집합.
    • 유일성과 최소성을 만족.
    • 릴레이션에는 최소 한 개 이상의 후보키 존재.
    • 예: (회원번호), (주민등록번호)
  3. 기본키(Primary Key):
    • 후보키 중 릴레이션에서 대표로 선정된 키.
    • NULL 값을 가질 수 없음.
    • 예: 신용카드번호
  4. 대체키(Alternate Key):
    • 후보키 중 기본키로 선정되지 않은 키.
    • 예: 주민등록번호 (기본키가 신용카드번호인 경우)
  5. 외래키(Foreign Key):
    • 다른 릴레이션의 기본키를 참조하는 속성.
    • 참조하는 릴레이션의 기본키와 동일한 도메인.
    • 값은 참조되는 기본키 값이거나 NULL.

3) 키들의 포함 관계

  • 수퍼키 ⊇ 후보키 ⊇ 기본키
  • 키들의 포함 관계
  • 관계 데이터 모델에서의 키

4. 무결성 제약

1) 데이터 무결성

  • 데이터의 정확성과 유효성을 보장.
  • 데이터베이스 상태가 일관성을 유지하도록 조건 설정.
  • DBMS가 자동으로 검사하여 응용 프로그램에서 별도로 확인할 필요가 없음.

2) 개체 무결성 제약조건 (Entity Integrity Constraint)

  • 기본키 속성은 NULL 값을 가질 수 없음.
  • NULL 값 의미:
    1. 값이 알려지지 않음 (unknown value)
    2. 해당 없음 (inapplicable)

3) 참조 무결성 제약조건 (Referential Integrity Constraint)

  • 외래키 값은 반드시 참조되는 릴레이션의 기본키 값이거나 NULL이어야 함.
  • 외래키와 기본키 사이 관계:
    • 외래키 값 기본키 값
    • 또는 외래키 값 = NULL

무결성 제약 유지 시 고려사항

  1. 삽입:
    • 참조하는 릴레이션에 존재하지 않는 값을 삽입하면 제약조건 위배.
    •  
      참조되는 경우


    • 참조하는 경우
  2. 삭제:
    • 참조되는 투플 삭제 시 다른 릴레이션의 무결성 위배 가능.

참조 무결성을 유지하기 위한 DBMS 옵션

  1. 제한(Restricted)
    • 동작: 참조 무결성을 위배하는 연산을 단순히 거절합니다.
    • :
      • 상황: 부서 릴레이션에서 (3, 개발, 9)를 삭제하려고 함.
      • 문제: 부서번호 3을 참조하는 사원 릴레이션의 레코드(박영권, 최종철)가 존재.
      • 결과: 삭제 연산이 거절됨.
  2. 연쇄(Cascade)
    • 동작: 참조되는 릴레이션의 레코드 삭제 시, 이를 참조하는 릴레이션의 레코드도 자동으로 삭제합니다.
    • :
      • 상황: 부서 릴레이션에서 (3, 개발, 9)를 삭제하려고 함.
      • 문제: 부서번호 3을 참조하는 사원 릴레이션의 레코드(박영권, 최종철)가 존재.
      • 결과: 부서 릴레이션의 (3, 개발, 9)와 함께 사원 릴레이션의 해당 레코드들도 모두 삭제됨.
  3. NO ACTION (= Restricted)
    • 동작: 참조 무결성을 위배하는 연산을 거절합니다(제한 옵션과 동일한 동작).
    • :
      • 상황: 부서 릴레이션에서 (3, 개발, 9)를 (5, 개발, 9)로 변경하려고 함.
      • 문제: 사원 릴레이션에서 부서번호 3을 참조하는 레코드(박영권, 최종철)는 변경되지 않음.
      • 결과: 변경 연산이 거절됨.

참조 무결성 유지를 위한 DBMS 옵션

1. 데이터베이스시스템 구조와 유형

  1. 데이터베이스시스템 아키텍처
    • 주요 구성 요소: 데이터베이스, DBMS, 질의처리기, 트랜잭션관리기 등.
    • API(Application Program Interface):
      • ODBC: 윈도우 기반 데이터베이스 연결 표준.
      • JDBC: 자바 기반 데이터베이스 연결 표준.
    • 데이터베이스 시스템 아키텍처
  2. 데이터베이스시스템 유형
    • 중앙집중식: 하나의 컴퓨터 시스템에서 데이터베이스 운영.
      • 중앙 집중식
    • 분산형: 네트워크로 연결된 여러 컴퓨터에서 데이터베이스 운영.
      • 분산 데이터베이스 시스템
    • 클라이언트-서버: 클라이언트에서 요청, 서버에서 처리.
      • 클라이언트 서버 데이터베이스 시스템
      • 2층 모델: 클라이언트와 데이터베이스 서버 직접 연결.
      • 3층 모델: 클라이언트와 서버 사이에 응용 서버 추가.

 


2. 데이터모델

  1. 개념
    • 데이터를 단순화, 추상화하여 체계적으로 표현하는 도구.
    • 데이터베이스 설계 과정:
      • 개념적 모델: 개체-관계(E-R) 모델 등.
      • 논리적 모델: 관계형 데이터모델 등.
  2. 구성 요소 (D = <S, O, C>)
    • S (구조): 개체타입 및 관계 명세 (정적).
    • O (연산): 데이터 처리 작업 명세 (동적).
    • C (제약조건): 데이터 무결성 및 논리적 제한 명세.
  3. 데이터모델의 종류
    • 관계형 데이터모델: 가장 널리 사용됨.
    • 계층형, 네트워크형, 객체지향형, 객체-관계형 데이터모델도 있음.

3. 관계데이터모델

  • 1970년 E.F. Codd가 제안.
  • 데이터 구조: 간단한 테이블(릴레이션) 기반.
  • 주요 특징:
    • 테이블로 논리적 데이터 구성.
    • 선언형 질의어 사용.
    • 데이터 처리에서 링크나 포인터 불필요.
    • 데이터의 "무엇"을 명시하며, "어떻게"는 DBMS에 위임.

4. 관계데이터모델의 용어

  • 릴레이션(Relation): 2차원 테이블.
  • 레코드/투플(Tuple): 릴레이션의 한 행.
  • 애트리뷰트(Attribute): 릴레이션의 한 열.
  • 도메인(Domain): 애트리뷰트가 가질 수 있는 값들의 집합.
  • 차수(Degree): 릴레이션의 애트리뷰트(열) 수.
  • 카디널리티(Cardinality): 릴레이션의 투플(행) 수.
  • 릴레이션

요약

  1. 데이터베이스시스템 아키텍처 유형
    • 중앙집중식, 분산형, 클라이언트-서버.
  2. 데이터모델
    • 구성요소: 구조(S), 연산(O), 제약조건(C).
  3. 관계형 데이터모델
    • E.F. Codd 제안, 릴레이션 기반.
  4. 기본 용어
    • 릴레이션: 테이블.
    • 투플: 행.
    • 도메인: 열의 값 집합.
    • 차수와 카디널리티: 열과 행의 개수.

1. 데이터베이스 시스템의 구성요소

  1. 데이터베이스
    • 정의: 조직 내 여러 응용시스템이 공유하는 통합된 운영 데이터 집합.
    • 구성:
      • 데이터 베이스
      • 시스템 카탈로그: 데이터베이스 스키마 정보를 저장.
      • 저장 데이터베이스.
  2. 데이터베이스 관리 시스템(DBMS)
    • 기능:
      • 사용자 요구 접수 및 분석.
      • 요구 변환 및 데이터 구조 매핑.
      • 데이터베이스 연산 수행.
    • 구성 요소:
      • DDL 컴파일러, 질의어 처리기, 런타임 처리기 등.
      • 트랜잭션 관리자: 무결성, 병행 제어, 회복 관리.
  3. 데이터 언어
    • 구분:
      • DDL(Data Definition Language): 데이터 스키마 정의(예: CREATE TABLE, ALTER TABLE).
      • DML(Data Manipulation Language): 데이터 검색, 수정, 삽입, 삭제(예: SELECT, UPDATE).
      • DCL(Data Control Language): 데이터 보안 및 무결성 관리(예: GRANT, REVOKE).
      • 데이터 언어
  4. 사용자 유형
    • 데이터베이스 관리자(DBA): 데이터베이스 스키마 관리, 무결성 및 권한 설정, 백업 및 복구.
    • 응용 프로그래머: 특정 응용프로그램 설계 및 데이터 접근.
    • 최종 사용자: 데이터 조회 및 처리.
    • 데이터베이스 설계자: 데이터 모델 설계 및 정규화 수행.
  5. 데이터베이스 컴퓨터
    • 역할: 데이터 처리 및 저장 전용 하드웨어.
    • 구성: 터미널 → 데이터베이스 응용 → DB 컴퓨터 인터페이스 → 저장 데이터베이스.
    • 데이터베이스 구성도

 

 


2. 3단계 데이터베이스 구조

  1. 3단계 표현
    • 외부 단계: 사용자 관점의 데이터 표현(개별 뷰).
    • 개념 단계: 전체 데이터베이스의 논리적 구조.
    • 내부 단계: 물리적 데이터 저장 구조.
  2. 스키마(Schema)
    • 외부 스키마: 개별 사용자 입장의 데이터 구조.
    • 개념 스키마: 통합된 데이터 구조.
    • 내부 스키마: 데이터 저장 및 접근 방법 명세.
  3. 3단계 간의 매핑
    • 외부/개념 매핑: 논리적 데이터 독립성 제공.
    • 개념/내부 매핑: 물리적 데이터 독립성 제공.
    • 내부/장치 매핑: 장치와 내부 스키마 간 연계.
    • 3단계 간의 매핑


    • 3단계 데이터베이스 구조
  4. 데이터 독립성
    • 논리적 데이터 독립성: 개념 스키마 변경이 외부 스키마에 미치지 않음.
    • 물리적 데이터 독립성: 내부 스키마 변경이 개념 및 외부 스키마에 미치지 않음.

 

요약

  • 데이터베이스 시스템은 데이터베이스, DBMS, 데이터 언어, 사용자 및 하드웨어로 구성됨.
  • 3단계 데이터베이스 구조는 데이터 독립성을 구현하며 데이터 관리 효율성을 높임.

+ Recent posts