1. 요구사항 분석과 시스템 설계 그리고 모델링
◎ 정보시스템 구축 절차 요약
▷ 분석, 설계, 구현, 시험, 유지보수의 5가지 단계
▷ 분석
▶ 구현하고자하는 프로젝트의 가장 첫번째 단계
▶ 시스템 분석 또는 요구사항 분석이라고 불림
▶ 요구사항 분석은 현재 우리가 '무엇을(What)' 할 것인지 결정
▶ 사용자의 인터뷰와 업무 조사 등을 수행
▶ 프로젝트의 첫 단추를 끼우는 중요한 단계
▶ 분석의 결과로 많은 문서 작성
▷ 설계
▶ 시스템 설계 또는 프로그램 설계
▶ 구축하고자하는 시스템을 '어떻게(How)' 할 것인지 결정
▶ 대부분의 프로젝트에서 분석과 설계의 과정이 전체 공정의 50% 이상 차지
◎ 데이터베이스 모델링과 필수 용어
▷ 데이터베이스 모델링
▶ 현실세계에서는 사용되는 데이터를 MySQL에 어떻게 옮겨 놓을 것인지를 결정하는과정
▶ 저장할 정보는 테이블(Table)이라는 형식에 맞춰 저장
▶ Ex) 쇼핑몰 데이터 베이스의 예
▷ 데이터
▶ 하나하나의 단편적인 정보
▶ 정보는 있으나 아직 체계화 되지 못한 상태
▷ 테이블
▶ 데이터를 입력하기 위해, 표 형태로 표현한 것
▶ Ex) 회원 정보 테이블, 제품 정보 테이블
▷ 데이터베이스(DB)
▶ 테이블이 저장되는 저장소
▶ 각 데이터베이스는 서로 다른 고유한 이름을 가지고 있습니다.
▷ DBMS(DataBase Management System)
▶ 데이터베이스를 관리하는 시스템 또는 소프트웨어
▷ 열(=컬럼=필드)
▶ 각 테이블은 열로 구성
▶ 회원 테이블의 경우에는 아이디, 회원 이름, 주소 등 3개의 열로 구성
▷ 열 이름
▶ 각 열을 구분하기 위한 이름
▶ 열 이름은 각 테이블 내에서는 중복되지 않고, 고유해야 함
▷ 데이터 형식
▶ 열의 데이터 형식
▶ 테이블을 생성할 때 열 이름과 함께 지정
▷ 행(=로우=레코드)
▶ 실질적인 데이터
▶ 회원 테이블의 경우 4건의 행 데이터, 즉 4명의 회원이 존재함
▷ 기본키(Primary Key) 열
▶ 기본 키(또는 주 키) 열은 각 행을 구분하는 유일한 열
▶ 중복되어서는 안되며, 비어 있어서도 안 됨
▶ 각 테이블에는 기본 키가 하나만 지정
▷ 외래키(Foreign Key) 필드
▶ 두 테블의 관계를 맺어주는 키
▶ 4장 이후 설명
▷ SQL(Structured Query Language)
▶ 구조화된 질의 언어
▶ 사람과 DBMS가 소통하기 위한 말(언어)
▶ 6, 7장에서 다룸
2. 데이터베이스 구축/관리 및 활용의 전반적인 절차
◎ 인터넷 쇼핑몰 구축을 위한 '쇼핑몰' DB 생성
1. 인터넷 쇼핑몰 구축 위한 '쇼핑몰' DB 생성
(1) MySQL 서버 연결 및 설정
▷ Windows의 [시작] >> [M] >> [MySQL] >> [MySQL Workbench 8.0 CE] 클릭해 Workbench 실행
▷ [MySQL Connections] 창에서 비밀번호 입력하여 접속
▷ Workbench의 초기 창(기본적으로는 [Schemas] 탭 클릭해놓고 사용)
▷ Workbench 종료 → 설정 저장
(2) 스키마(Schema) 생성
▷ MySQL에서는 스키마와 데이터베이스가 완전히 동일한 용어로 사용
▷ Workbench의 [SCHEMAS]의 빈 부분
▶ 마우스 오른쪽 버튼 클릭 후 [Create Schema](=Create Database) 선택
▶ CREATE SCHEMA 'shopdb'문을 퀴러 창에서 입력하는 것과 동일한 작성
▶ 이름 입력하면 DB 생성
▷ 왼쪽 데이터베이스 목록에 shopdb 데이터베이스 확인
▷ 아무것도 들어있지 않은 데이터베이스 생성
(3) 테이블 생성
▷ 회원테이블, 제품 테이블 각 열의 영문 이름 및 데이터 형식 결정
▶ 데이터베이스 모델링(특히 물리적 모델링) 시에 결정
▷ 형식이 정해지면 Create Table 실행해 테이블이름, 열이름, 데이터형식 등 테이블 내용 입력
▷ 생성된 SQL Query를 데이터베이스에 적용해 테이블 생성 완료
▷ shopDB의 [테이블]에서 생성한 테이블 확인
2. 데이터 입력 - 행 데이터 입력
(1) 회원 테이블의 데이터 입력
▷ Navigator의 [SCHEMAS]에서 [Shopdb] → [Tables] →[membertbl] 선택 후,
마우스 오른쪽 버튼을 클릭하고 [Select Rows - Limits 1000] 선택
▷ 아래 그림의 회원 테이블 데이터 Grid에 입력 후 Apply 해 저장(2) 제품 테이블의 데이터 입력
▷ 동일한 방식으로 제품 데이터 입력 후 저장
▷ 데이터를 삭제하려면 삭제할 행의 앞 부분에 마우스 대고 오른쪽 메뉴 Delete 사용해 삭
3. 데이터 활용
(1) 주로 SELECT문 사용해 데이터 활용(6, 7장)
(2) 사용할 데이터 베이스 선택
▷ SCHEMA에서 사용할 DB를 더블 클릭(진하게 색상이 변하면서 선택 됨)
(3) SQL 실행법
▷ 툴바의 <Execute the selected portion~~> 아이콘 클릭
▷ ctrl + shift + enter
▷ Workbench 메뉴의 [Query] → [Execute(All or Selection)]
(4) SQL은 대소문자 구별 없음
▷ 읽기 편하게 예약어는 대문자 (쿼리 창에서 파란색으로 표시)
(5) SELECT 열 이름 FROM 테이블 이름 [WHERE 조건]
▷ 모든 데이터 출력하기(열 이름 대신 '*')
▷ 열을 선택해 데이터 출력하기 (열 이름 나열)
▷ 특정 데이터를 만족하는 데이터 출력하기 (WHERE절에 조건 입력)
(6) 새로운 테이블 생성
▷ 테이블 이름에 space가 들어간 경우의 처리 (백틱[backtick]키 활용)
▷ Navigator 창에서 "Refresh All"의 중요성
▶ 새로 테이블을 만든 뒤 개체가 보이지 않을 경우 필수로 실행할 것
(7) 테이블 삭제
▷ DROP TABLE 테이블 이름
◎ table 생성 및 삭제
USE shopdb; -- 특정 데이터베이스 사용 -- 테이블의 구성요소 출력 select * from membertbl; select * from producttbl; -- membertbl 테이블의 memberName(한주연) 필터 select memberName, memberaddress from membertbl where memberName = "한주연"; -- 모든 테이블 확인 show tables; -- 테이블 구조 확인(표 내용 모두 출력) desc membertbl; desc producttbl; -- 테이블 삭제 drop table membertbl; drop table producttbl; -- 데이터베이스 삭제 drop database shopdb;
◎ table을 코드로 입력하는 방법
-- 데이터베이스들 확인 show databases; -- 데이터베이스 생성 create database shopdb; -- 데이터베이스 선택 use shopdb; -- 테이블 확인 show tables; -- 테이블 생성 create table membertbl ( memberID char(8) not null primary key, memberName char(5) not null, memberAddress char(20) ); create table producttbl ( productName char(4) not null primary key, cost int not null, makeDate date, company char(5), amount int not null ); insert into membertbl values('Dang', '당탕이', '경기 부천시 중동'); insert into membertbl values('Jee', '지운이', '서울 은평구 증산동'); insert into membertbl values('Han', '한주연', '인천 남구 주안동'); insert into membertbl values('Sang', '상달이', '경기 성남시 분당구'); insert into producttbl values('냉장고', '5', '2023-02-01', '대우', '22'); insert into producttbl values('세탁기', '20', '2022-09-01', 'LG', '3'); insert into producttbl values('컴퓨터', '10', '2021-01-01', '삼성', '17'); select * from membertbl; select * from producttbl;
3. 테이블 외의 데이터베이스 개체의 활용
(1) 인덱스(Index)
▷ 9장에서 다룰 에정
▷ 데이터베이스 '튜닝'의 개념
▶ 데이터베이스 성능 향상
▶ 쿼리에 응답하는 시간 단축시키는 것
▷ 책 뒤에 붙어 있는 '찾아보기'(또는 색인)와 같은 개념
▷ 데이터의 양이 많을수록 효과적으로 작용
▶ 응답속도가 현저히 차이 나는 결과
▷ 테이블의 열 단위에 생성
▷ 인덱스 사용 전/후의 실행 계획 (Execution Plan) 비교
◎ indexTBL 테이블 생성 및 값 추가
-- indexTBL 테이블 생성 및 값 추가 create table indexTBL( first_name varchar(14), last_name varchar(16), hire_date date ); -- 인덱스 테이블에 employees 데이터베이스 내에 있는 employees 테이블예시 데이터를 500개 가져와서 넣기 insert into indextbl select first_name, last_name, hire_date from employees.employees limit 500; -- indextbl 선택 select * from indextbl; -- indextbl의 first_name이 Mary만 필터 select * from indextbl where first_name = 'Mary'; -- 인덱스 생성 : first_name 기준으로 색인 생성 create index idx_indexTBL_firstname ON indexTBL(first_name); -- indextbl의 first_name이 Mary 필터 select * from indextbl where first_name = 'Mary';
▷ 그냥 검색만하면 cost가 50.75가 나타나고 first_name 기준으로 색인을 생성하면 cost가 35가 나타납니다.
▷ 일반 검색에서 cost가 낮을수록 성능이 좋습니다.
◎ producttbl 테이블 지우기
USE shopdb; select * from producttbl; drop table producttbl; show tables; use world; -- select * from producttbl;
◎ 뷰(View)
▷ 가상의 테이블
▷ 실제 행 데이터를 가지고 있지 않음
▶ 그 실체는 없는 것이며, 진짜 테이블에 링크Link된 개념
▶ 뷰를 SELECT(진짜 테이블의 데이터를 조회하는 것과 동일한 결과)
◎ 스토어드 프로시저(Stored Procedure)
▷ MySQL에서 제공해주는 프로그래밍 기능
▷ SQL문을 하나로 묶어 편리하게 사용하는 기능
▷ 다른 프로그래밍 언어와 같은 기능을 담당할 수도 있습니다.
▶ 실무에서는 SQL문(주로 SELECT)을 매번 하나하나 수행 X
▶ 스토어드 프로시저로 만들어 놓은 후 스토어드 프로시저로 호출
◎ 트리거(Trigger)
▷ 테이블에 부착되어 테이블에 INSERT나 UPDATE 또는 DELETE 작업이 발생되면 실행되는 코드
▷ ex) 탈퇴회원 관리
▶ 회원 테이블에서 빼서 탈퇴한 회원 관리 테이블로 옮김
▶ 회원 정보 + 탈퇴한 날짜를 관리하는 새 테이블의 필요성
◎ 백업과 복원
▷ 백업 : 현재의 데이터베이스를 다른 매체에 보관하는 작업
▷ 복원 : 데이터베이스에 문제 발생시 다른 매체에 백업된 데이터를 이용해 원상태로 돌려놓는 작업
▷ 백업과 복원은 DBA(DataBase Administrator : 데이터베이스 관리자)가 해야할 가장 중요한 일
◎ 데이터베이스 백업
▷ 백업용 폴더 작성
▶ 실제로는 다른 디스크에 이루어져야 의미 있습니다.
▷ DB 백업
▶ DB내의 모든 트리거, 스토어드 프로시저까지 백업
▶ 백업 폴더에 백업파일 저장
◎ 데이터베이스 복구
▷ DB 삭제 같은 큰 사고를 인위로 발생시켜 실습
▷ 복원 후 데이터가 온전한지 check 하는 것이 중요합니다.
mysal 최고 관리자
root
리눅스 최고 관리자
root
윈도우 최고 관리자
administrator
평상시에는 최고 관리자 계정으로 접근 X
MySQL에서 실행하는 것에 대해서 잠깐 익혀보았습니다.
컴활1급 공부했었을때 잠깐 공부했던 액세스와 사용하는 구문이 비슷하다는 생각이 들었습니다.
그럼 해볼만 하겠네요!!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > DB(SQL)' 카테고리의 다른 글
[DB_MySQL] 이것이 MySQL이다 ch06 SQL 기본 문법 2 (WHERE, BETWEEN, IN, LIKE, 서브쿼리) (0) | 2023.02.06 |
---|---|
[DB_MySQL] 이것이 MySQL이다 ch06 SQL 기본 문법 1 (SELECT, FROM) (0) | 2023.02.05 |
[DB_MySQL] 이것이 MySQL이다 ch05 MySQL 유틸리티 사용법 (0) | 2023.02.05 |
[DB_MySQL] 이것이 MySQL이다 ch04 데이터베이스 모델링 (0) | 2023.02.03 |
[DB_MySQL] 이것이 MySQL이다 ch01(DBMS, MySQL) (0) | 2023.02.02 |