728x90
반응형
키의 필요성
- 중복여부를 효과적으로 알 수 있도록 하는 수단
기본키(Primary Key) : 후보키 중 튜플(행)을 식별하는데 기준으로 사용할 키
- null값을 가질 수 없음
- 중복된 값을 가질 수 없음
- 모든 테이블에는 적어도 하나의 기본키가 존재
후보키(Candidate Key)
- 테이블에 있는 각 튜플을 고유하게 식별할 수 있어야 함
- 기본키(Primary Key) + 대체키(Alternate Key) = 후보키(Candidate Key)
대체키(Alternate Key) : 후보키 중 기본키로 선택되지 않은 나머지 키
- 기본키를 대체할 수 있는 키
복합키(Composite Key) : 하나의 컬럼이 후보키의 역할을 하지 못하고 두 개 이상 컬럼이 합쳐져야 후보키의 역할을 하는 경우
외래키(Foreign Key): 다른 테이블의 키를 가져 오는 것
- 다른 테이블의 기본키가 되거나, 일반 항목이 될 때 상위 항목의 키 = 외래키
- 상호 관련이 있는 테이블들 사이에서 데이터의 일관성을 보장해주는 수단
- 관계는 업무적인 연관성을 의미
- 두 테이블 사이에 존재하며 관계를 맺고 있는 테이블 중 하나는 부모 테이블이고 하나는 자식테이블
- 부모테이블의 기본키는 자식테이블에 외래키로 전이 되어짐
- 식별관계와 비식별관계로 나눌 수 있음
- 두 테이블 간에 외래키에 의한 참조관계에 있을 때 두 테이블간 데이터 불일치가 발생하는 상황이 되면 DBMS는 제한(restrict), 연쇄(csdcade), 널(null) 값으로 대체(nullify)
- ex) 부서테이블의 첫 번째 튜플을 삭제하려 할 때
- 제한(restrict) : 삭제하려는 튜플의 부서번호 값을 사원테이블에서 가지고있는 튜플이 있으므로 삭제연산을 거절
- 연쇄(cascade) : Delete cascade ↔ Update cascade, 삭제된 부서번호 값을 갖는 사원테이블의 튜플도 함께 삭제
- 널 값으로 대체(nullify) : 삭제연산을 수행한 뒤 삭제된 부서번호 값을 갖는 사원테이블의 튜플에서 부서번호를 null값으로 대체
참조 무결성 제약조건 : 외래키를 통해 두 테이블간의 데이터 무결성을 유지하는 것
식별자 관계 : 부모로부터 받은 식별자를 자식엔터티의 주 식별자로 이용하는 경우는 null값이 오면 안되므로 반드시 부모엔터티가 생성되어야 자기 자신의 엔터티가 생성되는 경우
비식별자 관계 : 부모엔터티로부터 속성을 받았지만 자식엔터티의 주 식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우
도메인(domain) : 각각의 속성들이 가질 수 있는 값들의 집합
튜플(tuple) = 행 : 개체에 속한 구성원들 각각의 정보를 표현
속성(attribute) = 열 : 릴레이션에서 관리하는 구체적인 정보 항목(필드)
- 데이터 무결성
- 참조 무결성
- 개체 무결성
- 도메인 무결성
2021-0608-01 SQL(Structed Query Language)의 개요
- 관계형 데이터 베이스를 대상으로 데이터 조작을 수행하는 명령
- DML(Data Manipulation Language) : 데이터 조작어 -- 만들어진 객체 안에 추가, 삭제 => INSERT, UPDATE, DELETE -- INSERT : 추가, DELETE : 삭제
- DCL(Data Control Language) : 데이터 제어어 -- 프로그램 제어 => GRANT, COMMIT, ROLLBACK, SAVEPOINT -- GRANT : 권한 부여 COMMIT : 저장 ROLLBACK : 진행상태를 되돌림 SAVEPOINT : 특정위치 저장
- DDL(Data Definition Language) : 데이터 정의어 -- 테이블 개체 생성, 삭제 및 변경 => CREATE, DROP, ALTER -- CREATE : 생성, DROP : 삭제, ALTER : 내용, 구조 변경
- Query : 데이터 조회어 -- 데이터 조회 => SELECT -- 원하는 조건으로 조회(테이블, 데이터 있어야 가능)
- 데이터 타입 CHAR : 고정적인 문자열 VARCHAR2 : 가변적인 문자열 NUMBER : 숫자(정수형, 실수형 가능) DATE : 날짜, 크기 필요X CLOB : 문자 대형 객체(Character), 크기 필요X BLOB : 이진 대형 객체(Binary) → 이미지, 동영상, mp3 등
- CREATE TABLE
오라클 객체를 생성하는 명령
(사용형식)
CREATE TABLE 테이블명(
컬럼명1 타입[(크기)] [NOT NULL] [DEFAULT 값][,] -- 생략 가능
[컬럼명2 타입[(크기)] [NOT NULL] [DEFAULT 값][,]] -- NOT NULL : 데이터 필수로 넣어야함
: -- 더 이어질 수 있음
컬럼명1 타입[(크기)] [NOT NULL] [DEFAULT 값][,] -- DEFAULT : 초기값 지정, 사용자가 입력 안했을 때 자동으로 값 지정
-- 기본키, 외래키 설정 : 기본키와 외래키는 중복되면 안됨
[CONSTRAINT 기본키설정명 PRIMARY KEY(컬럼명[, 컬럼명, ...])[,] -- 한글 : 설정, 컬럼명 만든 제목 입력 / , : 다음 컬럼명 있을 경우 필수
[CONSTRAINT 외래키설정명 FOREIGN KEY(컬럼명[, 컬럼명, ...]) -- 컬럼명 두 단어를 붙일 시 _ 붙이기 EX) Primary_Key
REFERENCES 테이블명(컬럼명[, 컬럼명,...])[,]
[CONSTRAINT 외래키설정명 FOREIGN KEY(컬럼명[, 컬럼명, ...]) -- CONSTRANT : 제약
REFERENCES 테이블명(컬럼명[, 컬럼명, ...])[,] -- 다른 테이블의 컬럼명을 참조 / REFERENCE : 참조
:
[CONSTRAINT 외래키설정명 FOREIGN KEY(컬럼명[, 컬럼명, ...])
REFERENCES 테이블명(컬럼명[, 컬럼명, ...]));
사용 예) 다음 조건을 만족하는 사원테이블을 생성하시오
테이블명 : DEPT
-------------------------------------------------------------
컬럼명 데이터타입(크기) NULL KEY DEFAULT
-------------------------------------------------------------
DEPT_ID NUMBER(3) N.N P.K -- P.K 자동으로 NOT NULL생성
DEPT_NAME VARCHAR2(30)
------------------------------------------------------------
CREATE TABLE DEPT(
-- 컬럼 생성 및 데이터타입(크기) 지정
DEPT_ID NUMBER(3), -- 기본키, 숫자 999까지 처리 가능
DEPT_NAME VARCHAR2(30), -- 가변적인 문자열
-- 기본키 설정
CONSTRAINT pk_dept PRIMARY KEY(DEPT_ID) -- 기본키
);
테이블명 : EMP
-------------------------------------------------------------
컬럼명 데이터타입(크기) NULL KEY DEFAULT
-------------------------------------------------------------
EMP_ID CHAR(4) N.N P.K
EMP_NAME VARCHAR2(30)
EMP_JOB VARCHAR2(30)
DEPT_ID NUMBER(3) F.K
------------------------------------------------------------
CREATE TABLE EMP(
-- 컬럼 생성 및 데이터타입(크기) 지정
EMP_ID CHAR(4) NOT NULL, -- 기본키, 문자열
EMP_NAME VARCHAR2(30), -- 가변적인 문자열
EMP_JOB VARCHAR2(30), -- 가변적인 문자열
DEPT_ID NUMBER(3), -- 숫자 999까지 처리 가능
-- 기본키, 외래키 설정
CONSTRAINT pk_emp PRIMARY KEY(EMP_ID),
CONSTRAINT fk_emp_dept FOREIGN KEY(DEPT_ID)
REFERENCES DEPT(DEPT_ID)
);
728x90
반응형
댓글