관계형 데이터베이스의 구성 요소
테이블
관계형 데이터베이스는 기본적으로 데이터를 2차원 표 형태로 저장하고 관리한다. 이 표 형태의 데이터 저장공간을 테이블(table)이라고 한다. 테이블은 2차원 형태이므로 가로줄과 세로줄로 구분되는데, 이 떄 가로줄을 행(row), 세로줄을 열(column)이라고 부른다.
행
행은 저장하려는 하나의 개체를 구성하는 여러 값을 가로로 늘어뜨린 형태이다.
즉 테이블을 구성하는 하나의 행은 학번, 이름과 같은 여러 값으로 이루어진 학생 한 명의 데이터를 의미한다.
열
열은 저장하려는 데이터를 대표하는 이름과 공통 특성을 정의한다. 예를 들어 각 학생의 데이터를 구성하는 학번과 이름, 그 외에 필요한 정보를 정의해 두면 각 학생의 학번, 이름, 학과 코드 등을 통일성 있게 저장할 수 있따. 그리고 열은 저장 정보의 종류(자료형)와 저장 가능한 값의 최대 길이 그리고 값의 중복을 허용하지 않는 등의 저장 조건과 범위를 지정할 수 있다.
관계형 데이터베이스와 테이블
관계형 데이터베이스에서 관계란 행과 열의 특성에 맞추어 데이터를 저장한 테이블을 하나하나를 의미한다. 여러 테이블의 구성과 관계를 잘 규정하고 관리하는 것이 관계형 데이터베이스에서 데이터를 관리하는 핵심이다.
관계형 데이터베이스에서 테이블은 관계(relation), 행은 튜플(tuple), 또는 레코드(record) 그리고 열은 속성을 의미하는 애트리뷰트(attribute) 또는 필드(field)라고 한다.
특별한 의미를 지닌 열, 키
키(key)는 하나의 테이블을 구성하는 여러 열 중에서 특별한 의미를 지닌 하나 또는 여러 열의 조합을 의미한다.
종류별로 데이터를 구별하거나 테이블 간의 연관 관계를 표현할 때 키로 지정한 열을 사용한다.
키는 기본키(primary key), 후보키(candidate key), 외래키(foreign key), 복합키(composite key)등으로 구분할 수 있다.
기본키
기본키(PK : Primary Key)는 여러 키 주엥서 가장 중요한 키로서 한 테이블 내에서 중복되지 않는 값만 가질 수 있는 키이다.
기본키의 속성 1. 테이블에 저장된 행을 식별할 수 있는 유일한 값이어야 한다. 2. 값의 중복이 없어야 한다. 3. NULL값을 가질 수 없다.
기본키는 중복되지 않는 유일한 값이라는 특성을 가졌기 때문에 하나 또는 여러 열의 조합으로 만들 수 있다.
특정 서비스를 제공하려면 각 사용자를 구별할 수 있는 데이터가 반드시 필요하다. 예를 들어 학번, 주민번호, 아이디 등이 사용자를 구별할 수 있는 데이터가 될 수 있다. 이들 중 한열을 기본키로 지정한다.
보조키
보조키는 대체키(alternate key)라고도 부르며 후보키(candidate key)에 속해있는 키이다.
그리고 후보키 중에서 기본키로 지정되지 않은 열이다.
- 후보키는 기본키가 될 수 있는 모든 키를 의미한다. 즉 기본키 역시 후보키에 속한다. 이 후보키중 기본키로 지정되지 않은 키를 보조키 또는 대체키라고 한다.
한 테이블에 학번/아이디/주민등록번호 등을 데이터로 저장하고 있을 때 유일한 데이터를 가지고 있고 빈 값(NULL)이 없는 열(학번/아이디/주민번호)은 기본키로 될 수 있는 후보키이다. 만약 기본키를 학번으로 설정하였을 때, 이를 제외한 아이디와 주민번호가 보조키가 된다.
외래키
외래키(FK: Foreign Key)는 특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키를 의미한다.
- 외래키는 외부키라고도 부른다.
예를 들어 두 개의 테이블 있다고 가정하였을 때,
한 테이블 중 학과 코드를 기본키로 지정하였다고 가정
나머지 한 테이블도 다른 테이블의 기본키 학과코드를 가지고 있다고 가정
이 때 학과 코드가 서로 두 테이블을 이어주는 외래키역할을 한다.
즉 한 테이블에서 다른 테이블로 학과 코드를 통해 정보를 세부 정보를 찾아갈 수 있다.
이를 '참조'한다고 표현한다.
언뜻 보면 외래키는 테이블을 두 개로 따로 나누어 데이터를 사용하므로 번거로워 보일 수 있지만, 이 외래키를 지정하지 않고, 한 테이블로 묶어버리면 엄청난 양의 데이터가 중복 데이터가 저장되는 현상이 벌어진다.
데이터 중복을 피해야 하는 이유를 예시로 들자면 , 학과 데이터의 종류가 100개 정도 있고, 학교에 학생은 매년 몇 천명씩 입학한다고 가정할 때, 졸업생 데이터까지 고려하면, 해마다 중복 데이터가 빠른 속도로 늘어난다.
또한 학과의 정보를 변경할 시, 해당 학과에 소속된 학생 데이터 수만큼 데이터를 바꿔야 하므로 시간이 지날수록 데이터 중복에 따른 처리비용이 증가하면 된다.
즉 외래키를 사용하여 엑셀처럼 여러 행에 걸쳐 특정 열을 병합을 하는 효과를 얻을 수 있다. 즉 데이터 중복을 최소화 할 수 있다.
복합키
복합키(composite key)는 여러 열을 조합하여 기본키 역할을 할 수 있게 만든 키이다.
복합키를 만들 때는 적게는 두세개, 많게는 열 개가 넘는 열을 조합하기 도 한다. 왜냐하면 하나의 열만으로 행을 식별하는 것은 불가능하며, 두 개 이상의 열 값을 함께 사용해야 각 행이 유일한 데이터로서 가치를 지니기 때문이다.
예를 들어 과목 정보 테이블에 과목코드, 담당교수, 전공여부, 과목이름 의 컬럼이 있다고 가정한다.
만약에 같은 과목을 여러 교수가 가르친다면 같은 과목 코드를 가지면서 담당교수가 달라질 것이다. 즉 기본키로 지정이 불가하다. 또한 담당교수를 기본키로 지정하면, 한 교수가 여러 과목을 가르치기 때문에 이또한 기본키로 지정이 불가하다.
즉 이럴 때 과목별 과목코드와 담당 교수 열을 조합하여 하나의 키로 지정한다면 과목 정보 테이블의 행을 정확히 구분하는 것이 가능하다. 즉 과목코드+담당교수가 기본키 역할을 하게된다.
오라클 데이터베이스
오라클 데이터베이스와 버전
오라클 데이터베이스는 오라클 사가 만든 DBMS 제품이다.
Oracle 8i → Oracle 9i → Oracle 10g → Oracle11g →Oracle 12c
여기서는 Oracle11g기준으로 학습을 진행한다.
자료형
데이터베이스에 저장하는 데이터는 다양한 형태를 가지고 있따. 숫자만으로 표현 가능한 데이터도 있고 여러 가지 문자를 포함한 데이터 있다. 이렇게 데이터가 어떤 형태의 데이터인지 말할 때 자료형이라는 용어를 사용한다.
VARCHAR2(길이) : 4000BYTE 만큼의 가변 길이 문자열 데이터를 저장할 수 있다. (최소 크기는 1 byte)
NUMBER(전체 자릿수, 소수점 이하 자릿수) : ±38자릿수의 숫자를 저장할 수 있다.
NUMBER(p,s)와 같이 표기할 경우 s자리만큼 소수점 이하 자릴수를 표현하고, 이 소수점 자리를 포함한 전체 p자리만큼 숫자 데이터를 저장한다.
DATE : 날짜 형식을 젖아하기 위해 사용하는 자료형으로 세기,연,월,일,시,분,초 저장이 가능하다.
CHAR(길이) : 4000byte만큼의 고정 길이 문자열 데이터를 저장할 수 있다.(최소 크기는 1byte)
NVARCHAR2(길이) : 4000byte만큼 가변 길이 국가별 문자 세트 데이터를 저장할 수 있다.(최소 크기는 1byte)
BLOB : 최대 크기 4GB의 대용량 이진 데이터를 저장할 수 있다.
CLOB : 최대 크기 4GB의 대용량 텍스트 데이터를 저장할 수 있다.
BFILE : 최대 크기 4GB의 대용량 이진 데이터 파일을 저장할 수 있다.
자료형은 테이블을 구성하는 열에 지정한다. 예를 들어 NUMBER(4)로 지정한 열이 있다면 네 자리 숫자만 저장이 가능하다. 이 열에는 문자열을 저장할 수 없고, 다섯자리 숫자를 저장할 수도 없다.
이렇게 하나의 자료형에 맞춰 한 종류의 데이터를 저장할 수 있는 자료형을 스칼라(scalar)형이라고 한다.
자료형은 여러종류가 있으며 한 번에 여러 데이터를 저장할 수 있는 VARRAY, NESTEDTABLE같은 컬렉션(collection)형도 있다.
가장 많이 사용하는 자료형은 VARCHAR2,NUMBER,DATE이다.
객체
객체는 오라클 데이터베이스 내에서 데이터를 저장하고 관리하기 위한 논리 구조를 가진 구성요소이다.
테이블(table) : 데이터를 저장하는 장소
인덱스(index) : 테이블의 검색 효율을 높이기 위해 사용함
뷰(view) : 하나 또는 여러 개의 선별된 데이터를 논리적으로 연결하여 하나의 테이블처럼 사용하게 해줌
시퀀스(sequence) : 일련 번호를 생성해줌
시노님(synonym) : 오라클 객체의 별칭(다른 이름)을 지정함
프로시저(procedure) : 프로그래밍 연산 및 기능 수행이 가능함 (반환 값 없음)
함수 (function) : 프로그래밍 연산 및 기능 수행이 가능함(반환 값 있음)
패키지(package) : 관련 있는 프로시저와 함수를 보관함
트리거(trigger) : 데이터 관련 작업의 연결 및 방지 관련 기능을 제공함
PL/SQL
오라클 데이터베이스를 포함한 여러 관계형 데이터베이스에서 데이터를 관리하기 위해 복잡한 기능이 필요할 때 기존 SQL만으로 이를 구현하는 것은 한계가 있다. 그래서 오라클 데이터베이스는 데이터관리를 위해 별도의 프로그래밍 언어를 제공하는데 이를 PI/SQL (Procedural Language extension to SQL)이라고 한다.
보통 오라클 데이터베이스 프로그래밍이라고 하면 SQL문과 PL/SQL 을 사용하여 프로그램을 제작하는 것을 의미한다. PL/SQL을 사용하면 변수, 조건문, 반복문 등 프로그래밍 언어에서 제공하는 요소를 사용하여 데이터를 관리할 수 있다. 따라서 SQL만 사용하는 것보다 강력한 데이터 관리 기능을 구현할 수 있다.
관계형 데이터베이스는 데이터를 2차원 표 형태로 저장/관리 하는데 이를 테이블이라고 한다. 테이블은 하나의 개체를 구성하는 여러 값을 가로로 늘어뜨린 행과 저장할 데이터를 이루는 각 값의 공통 특성을 정의하기 위해 세로줄 열로 구성된다. 기본키는 테이블의 행을 구분하는 유일한 값으로 사용하는 키이며 테이블에 단 하나만 지정할 수 있다. 기본키를 포함한 데이터를 식별할 수 있는 모든 키의 집합을 후보키라고 한다. 후보키 중 기본키로 선정되지 못한 나머지키는 보조키/대체키라고 한다. 또 특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키를 외래키라고 한다.
'Back-end' 카테고리의 다른 글
03 SELECT문의 기본 형식 (0) | 2021.07.06 |
---|---|
11 컬렉션 프레임웍(1) (0) | 2021.07.06 |
객체 지향 정리 (0) | 2021.07.05 |
10 날짜와 시간 & 형식화 (4) (0) | 2021.07.05 |
01 데이터 베이스 (0) | 2021.07.04 |