본문 바로가기

Programming/DataBase

(23)
[DataBase] 정규화 (Normalization) 정규화의 개념- 가장 작은 논리적 단위로 Table을 분리하고 중복을 제거하여 이상을 제거/ 공간의 효율적 활용하는 것. 정규화 과정아래의 테이블을 가지고 정규화 과정을 살펴보자. 테이블의 기본키(Primary Key)는 제품 번호 이다. 제 1 정규형- 반복된 속성 제거, 새로운 테이블 추가 (중복제거)- 테이블에 속한 모든 속성의 도메일이 원자값(Atomic Value)만으로 되어 있는 정규형이다. 즉, 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형이다. ex)위의 고객번호, 주소, 주문수량 주문번호 -> 고객번호, 주소 고객번호 -> 주소부분 함수적 종속 문제 발생. 제 2정규형테이블이 제1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다. 다..
[DataBase] 함수적 종속 (Functional Dependency) 함수적 종속의 개념- 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 하자. 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고, X -> Y로 표기한다. - 함수적 종속은 데이터의 의미를 표현하는 것으로, 현실 세계를 표현하는 제약조건이 되는 동시에 데이터 베이스에서 항상 유지되어야 할 조건이다. 다음의 테이블에서 함수적 종속을 살펴보자학번이름학년학과400이순신4컴공422유관순4물리과301강감찬3수학과320홍길동3체육과205장보고2컴공과240윤봉길2수학과104김구1체육과 테이블에서 이름, 학년, 학과는 각각 학번 속성에 함수적 종속이다. 이 것을 기호로 표시하면 다음과 같다...
[DataBase] 이상 (Anomaly) 이상이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 테이블 조작 시 문제가 발생하는 현상을 의미 한다. 이상의 종류- 삽입이상 (Insertion Anomaly) : 삽입 이상은 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상이다. ex) 테이블에서 학번이 '600'인 학생의 학년이 '2'라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생 테이블의 기본키는 학번과 과목번호이기 때문에 삽입할 때 반드시 과목번호가 있어야 한다. 즉, 데이터가 발생되는 시점에는 과목번호가 필요 없지만 테이블에 기록하고자 할 때 과목번호가 없어 등록할 수 없는 경우가 발생한다는 것이다. - 삭제이상 (Deleti..
[DataBase] 스토어드 프로시저 (Stored Procedure) 스토어드 프로시저의 개념- 스토어드 프로시저란 java에서 보면 일종의 내장 함수라고 보면 된다.ex) exp()과 같은 것을 말함. - 특정한 작업을 수행하는 SQL문을 논리적으로 그룹화한 것을 말한다. 프로시저는 그 자체 만으로도 완전한 프로그램의 축소판이라고 할 수 있다. - 연속된 SQL문들을 하나로 모아 SQL 서버에 미리 컴파일해서 저장해 놓은 것을 말하는데 클라이언트로부터 호출문을 통해 복잡한 SQL의 일괄 작업을 수행하는 데 적합하다. 스토어드 프로시저의 구성- 선언부 : 타입, 커서, 상수, 변수, 내포된 서브 프로그램을 선언하는 부분 - 실행부 : 코드 실행을 제어하고 데이터를 조작하는 문장들을 작성하는 부분 - 예외 처리부 : 스토어드 프로시저 실행중에 발생하는 예외를 처리하는 부분 ..
내장 SQL 내장 SQL(Embedded SQL, 삽입 SQL) 개념- 내장 SQL은 데이터 베이스 내의 데이터를 정의하거나 접근하는 SQL문을 응용프로그램 내에 내포하여 프로그램이 실행될 때 함께 실행되도록 호스트 프로그램 언어에 삽입한 SQL이다. 내장 SQL 특징- 응용 프로그램에 삽입되어 사용되는 SQL이다.- 내장 SQL 실행문은 호스트 실행문이 나타나는 곳이면 어디든 사용이 가능하다.- 일반 SQL문은 실행 결과로 여러 개의 튜플을 반환하는 반면, 내장 SQL문은 실행 결과가 여러개의 튜플이어도 맨 처음의 튜플 하나만을 반환한다.- 내장 SQL문에 의해 반환되는 튜플은 일반 변수를 사용하여 저장할 수 잇다.- 호스트 프로그램 변수와 데이터베이스 필드의 이름은 같아도 된다.- SQL 문장의 식별자로서 ‘EX..
SQL - DCL DCL의 개념 - 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는 데 사용하는 언어이다. - 데이터베이스 관리자(DBA)가 데이터 관리를 목적으로 사용한다 - DCL의 유형COMMIT : DB 조작 작업을 영구적으로 반영하여 완료ROLLBACK : DB 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구한다.GRANT : DB 사용자에게 사용 권한을 부여REVOKE : DB 사용자의 사용 권한을 취소 COMMIT- 트랜잭션이 성공적으로 끝나면 DB가 새로운 일관성(Consis-tency)상태를 가지기 위해 수행된 모든 변경을 DB에 반영하여 완료하여야한다. ROLLBACK- 트랜잭션의 일부를 성공적으로 끝내지 못하면 DB가 비일관성(Inconsistency)인 상태를 가질 수 있기 때문에..
SQL - DML [DML]이란 무엇인가?- DML이란 SQL 문장 종류의 하나로서 Data Manipulation Language의 약자로 데이터 조작언어란 의미.- 모든 DML문장은 트랜젝션을 유발시킨다. [SQL 문장의 종류] [오라클 데이터 베이스 에서의 DML 정의]* DML문은다음과같은상황에실행된다.-테이블에새로운행을입력할경우(INSERT)-테이블에존재하는행의내용을변경할경우(UPDATE)-테이블에존재하는행을삭제할경우(DELETE) [DML 문법 정리]1. INSERT 문 ① INSERT 기본 문법 INSERT INTO table [(column [, column...])]VALUES (value [, value...]); SELECT문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있다. table : 테이블..
SQL - JOIN JOIN의 개념 - JOIN은 2개의 테이블에 대해 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환한다. - JOIN은 크게 INNER JOIN과 OUTER JOIN으로 구분된다. - JOIN은 읿나적으로 FROM절에 기술하지만 릴레이션이 사용되는 어느 곳에서나 사용할 수 있다. INNER JOININNER JOIN 은 일반적으로 EQUI JOIN과 NON-EQUI JOIN으로 구분된다.EQUI JOIN- JOIN 대상 테이블에서 공통 속성을 기준으로 '='(Equal) 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN방법이다. - JOIN 조건이 '='일 때 동일한 속성이 두 번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법을 NATUR..
sql - select 문 SELECT문은 자료 기본검색시 사용되는 SQL 문이다. SELECT문 작성법 SELECT [DISTINCT] * or 열 이름 or 열 이름 as [ ALIAS] FROM 테이블 WHERE 조건 ORDER BY 열 expr [ASC 나 DESC] ; - 예약어를 이용하여 작성된 내용은 SQL 버퍼에 저장된다.- 산술식을 포함하여 검색 가능하다. ex) 열이름으로 검색시 열 이름 순서로 나타낸다. 열의 ALIAS 사용법 - 합성 연산자: (||) 로 열과 문자를 연결한다.ex) SELECT name || ',' || title as "staff" FROM staff ; - 중복행: distinct 를 쓰면 모든 열의 조합에 중복된 행을 제거한다.ex) SELECT distinct id, title FRO..
SQL - DDL(Data Define Language) DDL의 개념- DDL은 스키마, 도메인, 테이블 , 뷰, 인덱스를 정의하거나 변경 또는 제거할 때 사용하는 언어이다. - DDL로 정의된 내용은 메타데이터가 되며, 시스템 카탈로그에 저장한다. * 메타데이터 : 데이터 관리를 위한, 데이터에 대한 데이터를 의미함. 예를 들어 '학번은 숫자 1자리이며 1~4만 저장할 수 있다'라는 데이터는 실제 데이터가 아니고 데이터를 저장하기 위한 데이터 이므로 메타데이터라고 함. * 시스템 카탈로그 : 시스템 그 자체에 관련이 있는 다양한 객체들에 관한 정보를 포함하는 시스템 데이터 베이스 테이블임. * 서브 쿼리(SUB QUERY) : 서브쿼리는 조건절에 주어진 질의로서, 상위 질의에 앞서 실행되며 그 검색 결과는 상위 질의의 조건절의 피연산자로 사용된다. [Ÿ D..
관계대수(Relational Algebra) 기본연산 유도된 부가연산 위의 더보기를 누르시면 각 연산들의 특징 및 표기법 표가 나타납니다. 관계대수의 개념 - 관계대수는 관계형 데이터 베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 언어이다. - 관계대수는 하나 또는 두개의 릴레이션을 입력으로 받아들여 결과로서 새로운 릴레이션을 생성해내는 연산들의 집합이다. - 관계대수의 연산에는 기본 연산인 SELECT, PROJECT, JOIN, DIVISION 등과 집합 연산인 UNION, DIFFERENCE, INTERSECTION, CARTESIAN, PRODUCT 등이 있다. 순수 관계 연산자 SELECT- 릴레이션에 존재하는 튜플들 중에서 특정 조건을 만족하는 튜플들의 부분집합을 구하여 새로운 릴레이션을 만든다. - 릴에이션의 ..
뷰(View)의 개념 뷰의 개념- 뷰는 하나 이상의 기본 테이블에서 유도되는 가상(Virtual) 테이블이다. 즉, 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게는 있는 것처럼 보인다. - 뷰를 생성하면 뷰 정의가 시스템 내에 저장되었다가 생성된 뷰 이름을 질의어에서 사용할 경우 질의어가 실행될 때 뷰에 정의된 기본 테이블로 대체되어 기본 테이블에 대해 실행된다. 뷰의 특징- 보안에 이점이 있고 데이터 처리에 효율성이 증가됨.(필요한 데이터만 뷰로 정의하여 처리할 수 있으므로 불필요한 정보는 처리하지 않게됨.) - 뷰는 기본 테이블에서 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 가지며, 조작도 기본 테이블을 사용하는 것과 유사하다. - 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다. -..
무결성 (Integrity) 데이터베이스 - 무결성 : 무결성이란 데이터 베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미한다.다시말해, 저장된 DB에 잘못된 데이터가 없다는 것을 의미한다. 1. NULL무결성 : 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정 2. 고유(Unique) 무결성 : 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 한다는 규정- 릴레이션의 기본 키인 학번 속성에는 동일한 값이 존재하지 않으므로 고유 무결성을 만족한다. 그러나 릴레이션에서 학번 속성은 중복될 수 있기 때문에 고유 무결성을 만족하지 않는다. 3. 도메인(Domain) 무결성 : 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다는 규정- 릴레이션의 과..
키(key)의 개념 및 종류 슈퍼키(Super Key)- 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합, 릴레이션의 모든 튜플 중 슈퍼키와 동일한 값은 나타나지 않음 - 유일성 O, 최소성 x - 릴레이션에서 학번, 주민등록번호, (학번, 주민등록번호), (학생, 성명), (주민등록번호, 성명), (학번, 주민등록번호, 성명)이 슈퍼키 후보키(Candidate Key)- 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용 - 유일성 O, 최소성 O - 릴레이션에서 학번, 주민등록번호가 유일성과 최소성을 만족하므로 후보키, 릴레이션에서는 (학번, 과목명)이 유일성, 최소성을 만족하므로 후보키 - (학번, 과목명)과 같이 2개 이상의 속성을 조합하여 만든 키를 Composite Key라 한다. 기본키(Prim..
데이터베이스 설계(DataBase Design) DB 설계 데이터베이스 설계의 개념(1) 데이터베이스 설계란 데이터베이스의 구조(스키마)를 개발하는 과정이다. (2) 요구조건 분석, 개념적 설계, 논리적 설계, 물리적 설계, 데이터베이스 구현의 단계를 순서대로 반복하여 수행한다. (3) 데이터베이스의 구조에 치중하는 데이터 중심(Data-driven)설계와 데이터 처리 및 응용에 치중하는 처리 중심(Processing-driven) 설계를 병행한다. 요구조건 분석(Requirement Analysis)(1) 데이터베이스를 사용할 사람이 필요로 하는 용도를 파악하는 작업을 뜻한다. (2) 사용자의 요구조건을 수집하고 분석하여 공식적인 요구 조건 명세 (Requirement Specification)을 작성한다. (3) 요구조건 분석 단계에서 수집하고 분..
관계형 데이터모델 (Relational Data Model) 관계형 데이터모델 관계형 데이터 모델은 데이터를 테이블(=릴레이션)의 구조로 표현하는 논리적 데이터 모델이다. 관계형 데이터 구조 : 릴레이션(1) 관계형 데이터 모델에서는 데이터를 원자 값(Atomic Value)으로 갖는 이차원의 테이블로 표현, 이를 릴레이션이라 한다. (2) 릴레이션의 구조는 물리적인 저장 구조를 나타내는 것이 아닌 논리적 구조이므로 다양한 정렬 기준을 통하여 릴레이션을 표현 (3) 릴레이션은 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성 cf) Relation Schema(=Relation intension, 릴레이션 내포) : 릴레이션의 이름, 각 속성의 이름과 타입, 그리고 속성 값의 도메인을 정의하는, 즉 다시 말해 릴레이션 에 데이터를 넣을 수 있..
스키마 (Schema) 스키마의 개념- 스키마는 DB의 구조와 제약 조건에 관한 전반적인 명세(Specitication)를 의미한다. - 스키마는 DB를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다. - 스키마는 사용자의 관점에 따라 외부, 개념, 내부 스키마로 나뉜다. 그림으로 표현하면 다음과 같다. 스키마의 특징- 데이터의 구조적 특성을 의미함- 데이터 사전(Data Dictionary)에 저장된다.- 현실 세계의 특정한 한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어진다.- 시간에 따라 불변인 특성을 갖는다.- 데이터의 논리적 단위에 명칭을 부여하고 그 의미를 기술한다. 스키마의 3계..
데이터베이스 관리 시스템(DBMS) DBMS (DataBase Management System)의 개념- DBMS는 사용자와 데이터 베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어이다. - DBMS는 기존의 파일 시스템(FILE SYSTEM)이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템으로 모든 응용 프로그램들이 DB를 공유할 수 있도록 관리해 준다. 파일 시스템의 문제점- 데이터 종속성으로 인한 문제점 : 응용프로그램과 데이터 파일 간에 상호 의존적인 관계가 존재하기 때문에 데이터 파일이 보조기억장치에 저장되는 방법이나 저장된 데이터의 접근 방법을 변경할대 응용 프로그램도 같이 변경해야 하는 문제점이 있다. - 데이터 중복성으로 인한 문제점 : 중복도니 데이터 간에 ..
DataBase 의 개념 DataBase 정의 데이터 베이스는 특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임으로 다음과 같이 정의할 수 있다. - 통합 데이터(Integrated Data) : 검색의 효율성을 위해 중복이 최소화된 데이터의 모임 - 저장 데이터(Stored Data) : 컴퓨터가 접근 가능한 저장 매체에 저장된 데이터 - 운영 데이터(Operational Data) : 조직의 목적을 위해 존재 가치가 확실하고 반드시 필요한 데이터 - 공유 데이터(Shared Data) : 여러 응용 프로그램들이 공동으로 사용하는 데이터 DataBase 특징 - 실시간 접근성 (Real Time Accessibility) : 사용자의 질의에 대하여 즉시 처리하여 응답하는 특징 - 계속적인 진화 (Continu..
이분 검색 (Binary Search) - 알고리즘 이분 검색은 말 그대로 검색할 자료를 반씩 나누어서 나머지 반만 검색하는 방식을 반복하여 자료를 찾는 것으로, 빠른 속도로 자료를 찾을 수 있다. 단, 이분 검색은 데이터가 정렬되어 있어야 작업이 가능하다. 배열에 다음과 같이 자료가 들어 있을 때 55가 들어 있는 위치를 찾아보자. 8 15 35 55 60 61 70 80 92 99^ ^ 처음 자료인 8의 위치는 1이고 마지막 자료인 99의 위치는 10이다.위 값으로 가운데 값을 구하면 다음과 같다. 중간위치 M = (1+10)/2 = 5.5 ----> 5 (정수만 사용한다.) 중간위치의 값인 60은 55와 비교하여 55보다 더 큰 수 이므로, 8 15 35 55 60 61 70 80 92 99^ ^ 다음과 같이 찾으려는 값은 8과 55의 위치 즉 1과..
삽입 정렬(Insertion Sort) - 알고리즘 삽입 정렬은 두 번째 자료부터 시작하여 그 앞(왼쪽)의 자료들과 비교하여 삽입할 위치를 지정한 후 자료를 뒤로 옮기고 지정한 자리에 자료를 삽입하여 정렬하는 알고리즘이다. 즉, 두 번째 자료는 첫 번째 자료, 세 번째 자료는 두 번째와 첫번째 자료, 네 번째 자료는 세 번째, 두 번째 , 첫 번째 자료와 비교한 후 자료가 삽입될 위치를 찾는다. 자료가 삽입될 위치를 찾았다면 그 위치에 자료를 삽입하기 위해 자료를 한 칸씩 뒤로 이동시킨다. 그림으로 된 자세한 설명을 보시려면 아래 더보기를 클릭하세요. 배열에 8 5 6 2 4 가 저장되어 있다고 가정하고 자료를 정렬하면, 1회전 : 두 번째 자료인 5를 key로 해서 그 이전의 자료들과 비교한다.Key 값 5 와 첫 번째 자료인 8을 비교한다. 8이 5보..
버블 정렬(Bubble Sort) - 알고리즘 버블 정렬은 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째 자료와 네 번 째를,... 이런 식으로 (마지막 - 1) 번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬한다. 1회전을 수행하고 나면 가장 큰 자료가 맨 뒤로 이동하므로 2회전에서는 맨 끝에 있는 자료는 정렬에서 제외되고, 2회전을 수행하고 나면 끝에서 두 번째 자료까지는 정렬에서 제외 된다. 이렇게 정렬을 1회전 수행할 때마다 정렬에서 제외되는 데이터가 하나씩 늘어난다. 보다 쉬운 설명을 원하시면 아래의 더보기를 눌러주세유~ 배열에 8 5 6 2 4가 저장 되어 있다고 가정하고 자료를 정렬하자. 1회전 : 첫 번째 자료 8을 두 번째 자료 5와 비교하여 교환하고, 두 번째의 8과 세 번째의 6을 비교하여..
선택정렬 (Selection Sort) - 알고리즘 선택 정렬은 첫 번째 자료를 두 번째 자료부터 마지막 자료까지 차례대로 비료하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 자료를 세 번째 자료부터 마지막 자료까지와 차례대로 비교하여 그 중 가장 작은 값을 찾아 두 번째 위치에 놓는 과정을 반복하며 정렬을 수행한다. 1회전을 수행하고 나면 가장 작은 값의 자료가 맨 앞에 오게 되므로 그 다음 회전에서는 두 번째 자료를 가지고 비교한다. 마찮가지로 3회전에서는 세 번째 자료를 정렬한다. 설명만으로 이해가 어려우므로 아래에 그림으로 자세히 설명하겠다. 예를 들어, 배열에 8 5 6 2 4 가 저장되어 있다고 가정하고 선택정렬을 한다면, 1회전 : 첫 번째 자료 8 (1회전에서는 배열 0번이 기준이다.)을 두 번째 자료부터 마지막 자료까지와 비교하여 가..