OracleFirstProject 참조
-
데이터베이스 => 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아놓은 것
-
데이터베이스의 개념
- 통합된 데이터 : 데이터를 한 곳으로 통합해서 중복제거, 일관성 유지, 무결성의 원칙을 지킨다
- 저장된 데이터 : 직접 지우기 전까진 저장장치에 계속 저장되어 있다
- 운영 데이터 : 업무를 위한 검색을 할 목적으로 저장된 데이터
- 공용 데이터 : 한 사람이 아니라 여러명이 접근할 수 있다
-
데이터베이스의 특징
- 실시간 접근성 : 종료되지 않고 실시간으로 사용자에게 서비스를 제공한다
- 계속적인 변화 : 데이터는 시간에 따라 삽입, 삭제, 추가 등 계속 변화한다
- 동시 공유 : 데이터는 여러 사람에게 공유된다
- 내용에 따른 참조 : 메모리 주소가 아닌 실제 데이터값을 참조한다
-
데이터베이스 시스템 구성
- DBMS : 데이터베이스를 사용자가 사용할 수 있게 연결시켜주는 소프트웨어
- 데이터베이스 : 데이터를 모아 둔 토대, 물리적으로는 데이터들이 실제 저장된 곳(하드디스크 등)
- 데이터 모델 : 데이터가 저장되는 기법(스타일)
-
정보 시스템의 발전
- 파일 시스템 - 각 프로그램이 독립적으로 처리 -> 중복, 일관성 훼손
- 계층형 시스템 - 트리구조, 한방향으로만 처리
- 네트워크 시스템 - 클라이언트/서버
- 관계형 데이터베이스 시스템 - 데이터를 종류별로 나눠서 저장하고 체계적으로 관리한다
- 분산 데이터베이스 시스템 - 각각 데이터베이스를 이용하여 필요시 상호연동
- 최근에는 비정형화된 데이터를 정형화해서 예측 가능한 모델로 처리한다 => AI
-
파일 시스템 VS DBMS
- 데이터 정의 : 응용프로그램 / DBMS(오라클 사용)
- 데이터 저장 : 파일 / 오라클
- 데이터 접근 : 응용프로그램 / SQL 언어
- 사용 언어 : 자바,C,C++... / 자바, SQL
- CPU/주기억장치 : 적음 / 많음
-
데이터베이스 사용자
- 일반 사용자 : SQL을 모르면서 일반적인 검색,삭제,수정 등의 작업만 하는 사용자 => 검색어를 입력하면 프로그래머가 SQL 문장을 제작 => LIKE '%검색어%'
- 응용 프로그래머 : 데이터 처리 로직을 만든다(자바, SQL 등 사용)
- SQL 사용자 : 업무 담당자 => SQL문 사용, 전산실
- 데이터베이스 관리자(DBA) : 보안 관리, 설계, 유지보수 등
-
관계 데이터 모델
- 데이터베이스 모델
- 계층 데이터 모델
- 네트워크 데이터 모델
- 관계 데이터 모델
- 객체 데이터 모델
- 객체-관계 데이터베이스
- 데이터베이스 모델
-
릴레이션, 튜플, 애트리뷰트
- 릴레이션(=TABLE) : 행과 열로 구성된 데이터 테이블
- 튜플(=ROW) : 행, 클래스의 객체 인스턴스
- 애트리뷰트(=COLUMN) : 열, 클래스의 멤버변수
- 도메인 : 속성(=COLUMN)의 집합
-
릴레이션의 특징
- 속성(컬럼)은 단일 값이다
- 속성은 중복이 없다
- 속성은 순서가 없다
- 튜플도 순서가 없다
-
데이터 무결성 / 참조 무결성
- 이상현상 반드시 방지(수정, 추가, 삭제) => 원하지 않는 데이터 변경 위험
- 반드시 중복없는 데이터 사용 => PRIMARY KEY
- 이미 사용중인 데이터를 참조할 수 있게 만든다 => FOREIGN KEY
-
KEY의 종류
-
각 데이터를 구별하기 위한 값(구분자) ex) 배열/List의 index => 기본키(PRIMARY KEY) => 유일값 => 번호 => 영화번호, 도서번호, 게시물 번호 등 => CREATE SEQUENCE : 자동 번호 생성 => 데이터 무결성 목적으로 반드시 한 개 이상이 존재(NOT NULL)
-
후보키 => 기본키가 될 수 있는 키 => ID(PK)를 대신하는 후보키 : 주민번호(보안 위험) / 전화번호 / 이메일 주소 => NOT UNIQUE : 중복 불가
-
대체 키 => 후보키 중에 기본키로 선택 안된 키 => 이메일 주소, 주민번호 등
-
외래키(FOREIGN KEY) : 참조 무결성 => 다른 테이블의 기본키를 이용해서 연결
``` 게시판(게시판 번호(PK)) - 댓글(게시판 번호 포함) 회원(ID(PK)) - 예약(회원 ID) ``` -
슈퍼키 / 대리키 등
-
-
관계대수 => 데이터를 찾는 방법
- 셀렉션 => 조건에 맞는 데이터를 찾는 경우 => WHERE절 사용
- 프로젝션 => 출력에 필요한 컬럼만 선택
- 조인 => 서로 다른 테이블을 연결해서 사용할 때
- 집합연산자 => 합집합 / 차집합 / 교집합 / 카디션 프로덕트
-
DQL - SELECT 문장
- 형식/순서
SELECT *(ALL) / 원하는 컬럼지정(column list) FROM 테이블명; => 필수 조건 [ WHERE 조건(연산자) GROUP BY(그룹 컬럼) HAVING(그룹 조건, GROUP BY가 있을때만 사용) ORDER BY(정렬 컬럼) DESC(내림차순)/ASC(오름차순) ] => 옵션, 순서 지켜야함
- 형식/순서
-
SQL의 종류
- DML(데이터 조작어) : **SELECT => 데이터 검색(형식 많음), INSERT => 데이터 추가, UPDATE => 데이터 수정, DELETE => 데이터 삭제
- SELECT는 검색
- INSERT, UPDATE, DELETE는 데이터가 변하기 때문에 반드시 COMMIT; 필요
- DDL(데이터 정의어) : 테이블 / 뷰 / 시퀀스 / 인덱스 / 시노님 / 함수 / 프로시저 / 트리거 등을 만들 때 사용
- CREATE : 생성, DROP : 삭제, ALTER : 변경, TRUNCATE : 데이터 잘라내기, RENAME : 이름 변경
- DCL(데이터 제어어) : 데이터 권한 관리
- GRANT : 권한 부여, REVOKE : 권한 해제
- TCL(트랜잭션 제어어)
- COMMIT : 정상적으로 저장, ROLLBACK : 명령문 전체 취소, SAVEPOINT : 원하는 부분만 취소
- DML(데이터 조작어) : **SELECT => 데이터 검색(형식 많음), INSERT => 데이터 추가, UPDATE => 데이터 수정, DELETE => 데이터 삭제