관계형 데이터베이스의 구성 요소
테이블
관계형 데이터베이스는 기본적으로 2차원 표 형태로 저장하고 관리한다.
표 형태의 데이터 저장 공간을 테이블(table)이라고 한다.
테이블은 2차원 형태이므로 가로줄과 세로줄로 구성되는데, 이때 가로줄을 행(row, 로), 세로줄을 열(column, 칼럼)이라고 부른다.
행, 열은 관계형 데이터베이스의 SQL에서 사용한다.
관계형 데이터베이스에서 테이블은 관계(relation), 행은 튜플(tuple) 또는 레코드(record) 그리고 열은 속성을 의미하는 애트리뷰트(attribute) 또는 필드(field)
열, 키
키(key)는 수많은 데이터를 구별할 수 있는 유일한 값이라는 뜻이다. 하나의 테이블을 구성하는 여러 열 중, 특별한 의미를 지닌 하나 또는 여러 열의 조합을 의미한다.
키는 기본키(primary key), 후보키(candidate key), 외래키(foreign key), 복합키(composite key) 등으로 구분할 수 있다.
기본키 (PK : Primary Key)
여러 키 중에서 가장 중요한 키.
한 테이블 내에서 중복되지 않는 값만 가질 수 있는 키
🍀기본키의 속성
1. 테이블에 저장된 행을 식별할 수 있는 유일한 값이어야 한다.
2. 값의 중복이 없어야 한다.
3. NULL 값을 가질 수 없다.
기본키는 중복되지 않는 유일한 값이라는 특성을 가졌기 때문에 하나 또는 여러 열의 조합으로 만들 수 있다.
ex) 학생 정보 테이블이 있다고 가정했을 때, 학번/아이디/주민번호가 각 학생을 구별할 수 있는 데이터가 될 수 있다.
이들 중 한 열을 기본키로 지정하는데, 대부분 개인 정보 노출이 가장 적은 데이터를 선정하기 때문에 학번을 기본키로 지정한다.
보조키
대체키 (alternate key)라고도 부르며 후보키(candidate key)에 속해 있는 키.
후보키 중에서 기본키로 지정되지 않은 열이다.
*엄밀한 의미의 후보키는 기본키가 될 수 있는 모든 키를 의미한다. 즉 기본키 역시 후보키에 속한다.
이 후보키 중 기본키로 지정되지 않은 키를 보조키 또는 대체키라고 한다.
외래키 (FK : Foreign Key)
특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키를 의미한다.
* 외부키라고도 불리고, 실무에서는 외부키나 외래키보다는 포린키(foreign key)라고 부르는 경우가 더 많다.
외래키는 테이블을 두 개로 따로 나누어 데이터를 사용하므로 번거로워 보일 수 있다.
하지만 이런 테이블 자료를 합쳐서 관리하게 될 경우 엄청난 양의 중복 데이터가 저장되는 현상이 발생할 수 있다.
이러한 경우 하나의 정보를 변경해야 한다면 해당 테이블에 있는 데이터 수만큼 데이터를 바꿔야 하므로 시간이 지날수록 데이터 중복에 따른 처리 비용이 증가하게 된다.
엑셀처럼 중복된 내용을 병합하는 방법을 생각할 수 있겠지만, 관계형 데이터베이스에서는 엑셀처럼 여러 행에 걸쳐 특정 열을 병합하는 것이 불가능하다.
하지만 외래키를 사용하면 병합과 유사한 효과를 얻을 수 있어 데이터 중복을 최소화할 수 있다.
복합키 (composite key)
여러 열을 조합하여 기본키 역할을 할 수 있게 만든 키를 뜻한다.
ex) 학생들의 수강 과목 데이터 : 과목코드 / 담당교수 / 전공여부 / 과목이름이 있을 때,
같은 과목을 여러 교수가 가르친다면?
과목 코드를 기본키로 정하면 담당 교수가 다른 경우가 생긴다.
그렇다고 담당 교수를 기본키로 정한다면 한 교수가 서로 다른 과목을 가르치는 경우 테이블 행을 정확히 구분하는 것이 불가능하다.
이때 각 과목별 과목 코드 + 담당 교수 열을 조합하여 하나의 키로 지정한다면 해당 테이블의 행을 정확히 구분하는 것이 가능하다. == '과목코드 + 담당교수' -> 기본키 역할을 하게 된다.
오라클 데이터베이스
자료형
데이터베이스에 저장하는 데이터는 다양한 형태를 가지고 있다.
데이터가 어떤 형태의 데이터인지를 말할 때 보통 '자료형(data type)'이라고 한다.
자료형은 테이블을 구성하는 열에 지정한다.
ex. NUMBER(4)로 지정한 열이 있다면 네 자리 숫자만 저장할 수 있다.
이 열에는 문자열 저장 x, 다섯 자리 숫자 저장 x
이렇게 하나의 자료형에 맞춰 한 종류의 데이터를 저장할 수 있는 자료형 == 스킬라(scalar) 형
- 한 번에 여러 데이터를 저장할 수 있는 VARRAY, NESTED, TABLE 같은 컬렉션(collection) 형
- 가장 많이 사용하는 자료형 : VARCHAR2 / NUMBER / DATE
객체
객체는 오라클 데이터베이스 내에서 데이터를 저장, 관리하기 위한 논리 구조를 가진 구성 요소이다.
객체 | 설명 |
테이블(table) | 데이터를 저장하는 장소 |
인덱스(index) | 테이블의 검색 효율을 높이기 위해 사용함 |
뷰(view) | 하나 또는 여러 개의 선별된 데이터를 논리적으로 연결하여 하나의 테이블처럼 사용하게 해 줌 |
시퀀스(sequence) | 일련 번호를 생성해 줌 |
시노님(synonym) | 오라클 객체의 별칭(다른 이름)을지정함 |
프로시저(procedure) | 프로그래밍 연산 및 기능 수행이 가능함 (반환 값 없음) |
함수(function) | 프로그래밍 연산 및 기능 수행이 가능함 (반환 값 있음) |
패키지(package) | 관련 있는 프로시저와 함수를 보관함 |
트리거(trigger) | 데이터 관련 작업의 연결 및 방지 관련 기능을 제공함 |
PL/SQL
관계형 데이터베이스에서 데이터를 관리하기 위해 복잡한 기능이 필요할 때 기존 SQL만으로는 한계가 있다.
이를 위해 별도의 프로그래밍 언어를 제공하는데, 이를 PL/SQL이라고 한다.
PL/SQL을 사용하면 변수, 조건문, 반복문 등 프로그래밍 언어에서 제공하는 요소를 사용하여 데이터를 관리할 수 있다.
'SQL > 오라클_데이터베이스 입문' 카테고리의 다른 글
[SQL] 데이터 조작어_10 (0) | 2024.07.31 |
---|---|
[SQL] 오라클 함수_6 (0) | 2024.07.30 |
[SQL] WHERE절과 연산자_5 (0) | 2024.07.28 |
[SQL] SELECT문의 기본 형식_4 (1) | 2024.07.28 |
[SQL] 데이터베이스_1 (0) | 2024.07.26 |