0. MySQL 설치 (on docker)
- C:\dev 폴더 하나 만들어서 그 안에서만 개발하기
- 강의자료 폴더와 내가 공부하는 폴더는 따로 생성
- C:\dev\mysql\mysql_installed에 docker-compose.yml (강사님이 따로 주심) 이동
- powershell > cd C:\ >cd C:\dev\mysql\mysql_installed 폴더 위치 이동
- mysql_installed하위에 database에 폴더 생성
- docker-compose up -d # mysql생성 및 실행
- database에 파일 설치 됨 & 도커에 컨테이너 생성된 것 확인
- 컨테이너 일시정지, run 가능
dbeaver 설치
- 디폴트값으로 dbeaver 설치
- 윈도우 > 환경설정 > Dark 검색 > dark mode 적용
- connect DB > mysql > 아이디,비번(root/root1234) 입력, driver settings > Local Client 누르면 알아서 설치됨
> test connection
> Driver properties > allowPublicKeyretrieval true 표시
- localhost에서 초록색 체크박스로 디비버가 컨테이너와 연결된 것을 확인가능
1. mysql on docker 확인
2. 데이터
엑셀 : 행열로 데이터 저장
2-1. 데이터 종류
- 정형 데이터 : 엑셀에 들어갈 법한 데이터들. 스키마가 있다.
- 반정형 데이터
- 이메일 (보낸 사람, 받는 사람,제목, 본문 내용) : 자유도가 높으나 정해진 구조가 어느정도 있다.
- 비정형 데이터
- 음성, 영화, 이미지, 음성
- 갈수록 기하급수적으로 늘어나고 있다.
- 다루기 까다로운데, 이런 데이터를 AI를 통해서 쉽게 다뤄지고 있다.
- 다루기 쉽도록 비정형 데이터를 정형데이터로 변환하기도 한다.
2-2. 데이터베이스 특징
- 실시간 접근성: 질의에 즉각처리하여 응답
- 계속전 진화: 항상 최신화 가능
- 동시 공유: 다수의 유저가 접속시 같은 데이터를 보여줌
- 내용에 의한 참조: 데이터 참조시 튜플의 주소나 위치가 아닌 사용자가 요구하는 데이터 내용에 따라 참조. 권한 제어.
- 데이터 논리적 독립성: 응용프로그램과 디비 독립시켜서 데이터 논리적 구조 변경시켜도 응용 프로그램 변경 안됨. ex)카톡 박살나더라도 디비가 멀쩡하여 로그인정보 보존할 수 있으면 됨
3. DBMS (Database Management System)
- 파일 시스템
- dbeaver 같은 프로그램으로 데이터 조회 및 조작 가능
- app (dbeaver) <-> dbms (폴더파일) <-> mysql server 로 상호작용
3-1.기능
(데이터)
- 정의
- 구축
- 조작
- 공유
- 보호
- 유지보수
3-2. RDB vs NoSQL
RDB
- RDB (Relational DBMS: 관계형 DB) vs NoSql (구조화 없이 저장)
- 일대다 관계 등을 Schema로 구조화 (강사:학생, 학생:교과목, 학원:강사)
- oracle
- ex) 주문 목록 테이블
- id (식별자), 일반적으로 숫자 많이 쓴다.
- 주문 목록 테이블 = 고객 테이블 + 상품 테이블 (id로 조합한다.)
- 고객 -> 주문 (일대다) , 주문 -> 고객 (일대일)
- 상품 -> 주문 (일대다), 주문 -> 상품 (일대일)
- 고객<-> 상품 (관련 없음)
NoSQL
- 저장하는 데이터 형태 : Graph (Node, Edge), Document, Key-Value, Column-Family
4. 데이터 베이스 모델링
데이터를 쪼개는(정규화하는) 방법
4-1. 순서
- 업무 파악: 무엇을 만들어야 하나?
- 블로그를 어떤식으로 만들 것인가에 대한 정리
- 설계 / 개념적 데이터 모델링 (ERD: Entity Relationship Diagram 작성) : 도식화
- 게시글 id, 로그인 정보, 글쓴이 등등 을 도식화하여 구상
- 설계 / 논리적 데이터 모델링
- 데이터 타입 정의 (로그인 상태: Bool, 게시글 id: int )
- 일대다 등의 논리적 관계도 구상
- 설계 / 물리적 데이터 모델링 (테이블 만들기)
- 개체, 인덱스 생성
- 데이터베이스 구현
4-2. 실습
배달 어플 저기요 만들기
[업무 파악]
- 식당 정보
- 식당 id, 음식 종류,음식명, 가격, 사진,주소
- 음식 주문
- 주문 id, 식당 id, 음식 id, 주문한 음식 갯수, 고객 id, 주문 날짜
- 주문상태 (조리중, 배달중, 주문 거절,주문 완료,배달완료)
- 음식 리뷰
- 리뷰id, 이미지,리뷰 내용, 별점 (1~5), 주문 id, 리뷰 날짜
- 고객 정보
- 주소, 고객 id, 연락처
5. dbeaver
- My SQL > Databases > tables > data
DDL (Data Definition Language)
- 디비와 테이블을 정의(생성),수정,삭제할 수 있는 명령어
- 생성, 삭제할 때 새로고침하여 확인하자
# 조회 ===================
show databases;
show tables;
/*
* My SQL > Databases > tables > data
* DDL : Data Definition Language
*/
# db 생성 =============
# 명령어: create database DB명;
# 세미콜론 단위로 실행된다.
create database dbname; # db 생성
show databases; # db 조회
use dbname; # db 사용
-- drop database if exists dbname; # db 삭제
show databases; # db dbname 없는 것 확인
# db table 생성 =========
create table student (
student_id int unsigned auto_increment,
student_name varchar(10) not null ,
student_address varchar(50), # 50:최대길이
create_dt timestamp default now(),
modify_dt timestamp default now(),
primary key(student_id)
);
show tables;
# description ================
desc student;
# table 삭제 =================
drop table if exists student;
show tables;
# db 삭제 ===================
drop database if exists dbname;
이제 토이 프로젝트 '코인 자동 매매봇'도 만들어야 하고, 다소 잘 모르는 DB도 배워야 한다. 파이썬까지는 그래도 할만했는데, 앞으로 조금씩 힘들어질 것 같다. 그리고 목디스크가 와서 목이 너무 아프다. 거북목 스트레칭을 매일 자기전에 해야겠다.
'개발공부 > SK Networks Family AI bootcamp 강의노트' 카테고리의 다른 글
9일차 [SQL(DML)] (0) | 2025.01.17 |
---|---|
9일차 [SQL (DDL,DCL)] (0) | 2025.01.17 |
7일차 [ 파이썬 기초 (상속,표준 라이브러리)] (0) | 2025.01.15 |
개발 공부 방법 공유 (0) | 2025.01.14 |
6일차 [파이썬기초(iterator,class,상속)] (0) | 2025.01.14 |