발표2
DATABACE/MYSQL 2018. 2. 19. 10:50 |MYSQL chapter 01. DBMS 개요와 MySQL 소개
// 데이터베이스를 간단히 정의하면 '대용량의 데이터 집합을 체계적으로 구성해 놓은 것'
// 데이터베이스 관리 시스템(DBMS:Database Management System)은 이러한 데이터베이스를 관리, 운영해 주는 시스템 또는 소프트웨어를 일컫는다.
// 데이터베이스는 여러 명의 사용자나 응용프로그램이 공유하고 동시에 접근이 가능해야 한다.
// 데이터베이스는 '데이터의 저장공간' 그 자체를 의미하기도 한다,
특히 MYSQL에서는 ' 데이터베이스'를 자료가 저장되는 디스크 공간(주로 파일로 구성됨)으로 취급한다
왜?
---
// MYSQL은 이 DBMS 소프트웨어의 일종으로 Oracle사에서 제작한 툴이다.
이 책에서는 :
데이터베이스는 '데이터의 집합' 또는 '데이터의 저장공간'으로 다룰것이며
DBMS는 데이터베이스를 운영하는 '소프트웨어'를 의미하는 것으로 하겠다.
// 이책을 기반으로 설명해드리겠습니다
1.1 DBMS 개요
1.1.1 데이터베이스의 정의와 특징
* DBMS 또는 데이터베이스의 특징
- 데이터의 무결성
// 데이터베이스 안의 데이터는 어떤 경로를 통해 들어 왔던지 데이터에 오류가 있어서는 안 된다.
// 이 무결성을 위해서 데이터베이스 제약 조건이라는 특성을 가진다.
- 데이터의 독립성
// 데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용프로그램은 전혀 영향을 받지 않아야한다. 즉, 서로 의존적 관계가 아닌 독립적인 관계이여야 한다
- 보안
// 데이터베이스 안의 데이터에 아무나 접근할 수 있는 것이 아니라 데이터를 소유한 사람이나 데이터에 접근이 허가된 사람만 접근할 수 있어야한다.
// 또, 접근할 때도 사용자의 계정에 따라서 다른 권한을 가져야한다.
- 데이터 중복의 최소화
// 동일한 데이터가 여러 개 중복되어 저장되는 것을 방지한다
- 응용프로그램 제작 및 수정이 쉬워짐
// 기존 파일시스템을 사용할 때는 각각 파일의 포맷에 맞춰 개발해야 하는 응용프로그램을 데이터베이스를 이용함으로써
통일된 방식으로 응용프로그램 작성이 가능해지고, 유지보수 또한 쉬워진다.
- 데이터 안전성 향상
// 대부분의 DBMS가 제공하는 백업, 복원 기능을 이용함으로써, 데이터가 깨지는 문제가 발생할 경우에 원상으로 복원 또는 복구하는 방법이 명확해진다.
1.1.2 데이터베이스의 발전
// 초창기의 컴퓨터에는 데이터베이스라는 개념이 없었을 것이다.
다음과 같이 몇 가지 단계를 거쳐 데이터베이스를 사용하게 되었다.
- 오프라인으로 관리
- 파일시스템의 사용
// 파일시스템에는 대개 하나의 응용프로그램마다 하나의 데이터 파일이 할당된다.
// 즉, 어떤 기능을 구현하기 위해서 기능의 개수만큼 데이터 파일의 숫자가 생겨야 할 것이다.
// 초기에는 큰 문제가 없을 수도 있지만, 시간이 지나서 데이터의 양이 많아지면 데이터의 중복으로 인한 불일치가 발생한다
// 불일치가 파일시스템의 큰 문제점 중 한 가지이다.
// 그러나, 이러한 문제점에도 불구하고 파일 시스템은 소량의 데이터를 처리하기에는 처리 속도가 DBMS보다 훨씬 더 빠르며 별도의 추가 비용이 들지 않기에 아직도 많이 사용된다.
- 데이터베이스 관리시스템
// 파일시스템의 단점을 보완하고 대량의 데이터를 보다 효율적으로 관리하고 운영하기 위해서 사용되기 시작한 것이 DBMS(DBMS:Database Management System)다.
// DBMS는 데이터의 집합인 '데이터베이스'를 잘 관리하고 운영하기 위한 시스템 또는 소프트웨어를 말한다.
// DBMS에 데이터를 구축하고 관리하고 활용하기 위해서 사용되는 언어가 SQL(Structured Query Language)이다.
// 이 SQL을 사용해서 우리가 DBMS를 통해 중요한 정보들을 입력하고 관리하고 추출할 수 있다.
1.1.3 DBMS 분류
// DBMS의 유형은 크게
1. 계층형(Hierarchical) DBMS,
2. 망형(Network) DBMS,
3. 관계형(Relational) DBMS,
4. 객체지향형(Object-Oriented) DBMS,
5. 객체관계형(Object-Relational) DBMS 등으로 분류된다.
// 현재 사용되는 DBMS 중에서는 3.관계형 DBMS가 가장 많은 부분을 차지하며,
// 일부 멀티미디어 분야에서 4.객체지향형 DBMS이나 5.객체관계형 DBMS가 활용되고 있는 추세이다.
// 우리가 배울 MYSQL과 더불어 Oracle, DB2, SQL Server, Access 등은 모두 관계형 DBMS이므로,
// 이 책에서 다루게 되는 내용도 모두 관계형 DBMS(RDBMS)를 기준으로 맞추었다.
1. 계층형 DBMS
// 처음 나온 DBMS 개념으로 각 계층은 트리형태를 가지며 1:N 관계를 갖는다.
// 계층형 DBMS의 문제는 처음 구축한 이후에는 그 구조를 변경하기가 상당히 까다롭다는 것이다.
// 또, 주어진 상태에서의 검색은 상당히 빠르지만, 접근의 유연성이 부족해서 임의의 검색에는 어려움이 따른다.
///////////////////////
- 관계형 DBMS(RDBMS)
// RDBMS의 핵심은
// '데이터베이스는 테이블(table)이라' 불리는 최소 단위로 구성되어 있고, 이 테이블은 하나 이상의 열로 구성되어 있다.'
// 관계형 DBMS에서 모든 데이터는 테이블에 저장되므로, 테이블이라는 구조가 RDBMS의 가장 기본적이고 중요한 구성이된다.
// 테이블은 데이터를 효울적으로 저장하기 위한 구조이다.
// 정보를 저장하기 위해서 하나의 테이블이 아닌 여러 개의 테이블로 나누어서 저장함으로써 불필요한 공간의 낭비를 줄이고 데이터의 저장의 효율성을 보장해 줄 수 있따.
// 또 이렇게 나뉜 테이블의 관계를 기본 키(Primary Key)와 외래 키(Foreign Key)를 사용해서 맺어 줌으로써, 두 테이블을 부모와 자식의 관계로 묶어 줄 수 있다.
1.1.4 SQL 개요
// SQL(Stuctured Query Language)은 관계형 데이터베이스에서 사용되는 언어로 '에스큐엘' 또는 '시퀄'로 읽는다
// SQL이 비록 데이터베이스를 조작하는 '언어'이지만 일반적인 프로그래밍 언어와는 좀 다른 특성을 가진다
- DBMS 제작 회사와 독립적이다
- 다른 시스템으로 이식성이 좋다
- 표준이 계속 발전한다
- 대화식 언어이다
- 분산형 클라이언트/서버 구조이다
MYSQL chapter 02. MySQL 설치
// Workbench는 사전적 의미로 '작업대'를 뜻하듯이 MySQL Workbench에서 MySQL고 관련된 대부분의 작업을 GUL로 처리하고 결과를 확인할 수 있다.
// 이러한 것을 '통합 개발 환경'이라고 부른다
// 실무에서는 Linux 환경에서 MySQL을 더 많이 사용한다.
MySQL chapter 03. MySQL 전체 운영 실습
3.1 요구사항 분석과 시스템 설계 그리고 모델링
3.1.1 정보시스템 구축 절차 요약
// 정보시스템을 구축하기 위해서는 일반적으로 분석, 설계, 구현, 테스트, 유지보수의 5가지 단계를 거치게 된다.
// 분석과 설계의 과정이 전체 공정의 50% 이상을 차지한다.
3.1.2 데이터베이스 모델링과 필수 용어
// 분석과 설계 과정 중에서 가장 중요한 과정 중의 하나가 '데이터베이스 모델링'이다.
// 데이터베이스 모델링이란 현실세계에서 사용되는 데이터를 MySQL에 어떻게 옮겨 놓을 것인지를 결정하는 과정이라고 생각하면 된다.
// 기본 키(Primary Key) 열 : 기본 키(또는 주 키) 열은 각 행을 구분하는 유일한 열을 말한다.
기본 키 열은 중복되어서는 안되며, 비어 있어서도 안 된다.
또, 각 테이블에는 기본 키가 하나만 지정되어 있어야 한다.
// 외래 키(Foreign Key) 필드 : 두 테이블의 관계를 맺어주는 키
3.2 MySQL을 이용한 데이터베이스 구축 절차
3.2.1 데이터베이스 생성
(스키마 == 데이터베이스) 동일한 용어
3.2.2 테이블 생성
// MySQL은 기본적으로 테이블 이름, 열 이름 등을 모두 소문자로 처리한다. 그러므로, 대문자로 입력하더라도 소문자로 변경되어서 저장한다.
// 이 책에서는 독자가 읽기 편하도록 되도록 예약어를 대문자로 사용하겠다.
3.2.3 데이터 입력
3.2.4 데이터 활용
// 데이터를 활용한다는 것은 주로 'SELECT'문을 사용한다는 의미이다.
// SELECT의 기본 형식은 SELECT 열 이름 FROM 테이블 이름 WHERE 조건 형식을 갖는다
// *는 모든 열을 의미한다
// 그러므로 SELECT * FROM memberTBL문은 '회원 테이블의 모든 열을 보여줘라' 정도의 의미이다.
MySQL chapter 03. MySQL 전체 운영 실습
3.3 테이블 외의 데이터베이스 개체의 활용
3.3.1 인덱스
p74
1 2 3 4 5 6 | CREATE TABLE indextbl (first_name VARCHAR(14), last_name VARCHAR(16), hire_date DATE); INSERT INTO indextbl SELECT first_name, last_name, hire_date FROM employees.employees LIMIT 500; SELECT * FROM indexTBL; | cs |
1 | select * from indexTbl where first_name = 'Mary'; | cs |
p76
1 2 3 | CREATE index idx_indexTBL_firstname ON indexTBL(first_name); select * from indexTbl where first_name = 'Mary'; | cs |
p79
1 2 3 4 5 | CREATE VIEW uv_memberTBL AS SELECT membertName, membertaddress FROM memberTBL; SELECT * FROM uv_memberTBL; | cs |
3.3.3 스토어드 프로시저
// 스토어드 프로시저(Stored Procedure)란 MySQL에서 제공해주는 프로그래밍 기능을 말한다.
// 즉, SQL문을 하나로 묶어서 편리하게 사용하는 기능이다.
// 실무에서는 SQL문 (주로 SELECT)을 매번 하나하나 수행하기보다는 스토어드 프로시저로 만들어 놓은 후에 스토어드 프로시저를 호출하는 방식을 많이 사용한다. (C에서 구조체같은 개념)
p81
1 2 | SELECT * FROM memberTBL WHERE membertName = '당탕이'; SELECT * FROM producttbl WHERE productName = '냉장고'; | cs |
1 2 3 4 5 6 7 8 9 | DELIMITER // CREATE PROCEDURE myProc() BEGIN SELECT * FROM memberTBL WHERE membertName = '당탕이'; SELECT * FROM producttbl WHERE productName = '냉장고'; END // DELIMITER ; CALL myProc(); | cs |
MySQL chapter 04. 데이터베이스 모델링
4.1 프로젝트의 진행 단계
// 프로젝트란 '현실세계의 업무를 컴퓨터 시스템으로 옮겨놓은 일련의 과정', '대규모의 프로그램을 작성하기 위한 전체 과정'
- 폭포수 모델
// 업무 분석과 시스템 설계, 이 두 단계를 합쳐서 전체 공정의 최소 50% 이상을 할당해야 한다.
4.2 데이터베이스 모델링
4.2.1 데이터베이스 모델링 개념
// 데이터베이스 모델링(또는 데이터 모델링)이란 현 세계에서 사용되는 작업이나 사물들을 DBMS의 데이터베이스 개체로 옮기기 위한 과정이라고 말할 수 있다.
4.2.2 데이터베이스 모델링 실습
// 1대다 관계가 관계형 데이터베이스에서 가장 보편적인 테이블 사이의 관계이다.
// 1대다 관계 : 기준이 하나인 것과 하나의 기준이 여러 개의 기록을 남기는 것으로 부모 테이블과 자식 테이블을 구분할 수도 있다.
// 부모 테이블인 고객 테이블과 자식 테이블인 구매 테이블의 관계를 맺어주는 역할은 기본 키(PK, Primary Key)와 외래 키(FK, Foreign Key)를 설정함으로써 이뤄진다.
// 기본키(부모테이블) - 외래키(자식테이블)을 1대다 관계라고도 부른다
'DATABACE > MYSQL' 카테고리의 다른 글
MySQL chapter 06. SQL 기본 6.2 데이터의 변경을 위한 SQL문 // 추가 (0) | 2018.02.27 |
---|---|
MYSQL 단축키 (0) | 2018.02.27 |
발표1 (0) | 2018.02.19 |
Java MySQL 연결을 위한 MySQL Connector 설치방법 (0) | 2018.02.18 |
자바 MySQL SQL문 코딩 방법 (0) | 2018.02.18 |