개발공부/SK Networks Family AI bootcamp 강의노트

8일차 [ DB(RDB,DDL) ]

HyunJung_Jo 2025. 1. 16. 17:00

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 확인

mysql 이 설치된 docker container

2. 데이터

엑셀 : 행열로 데이터 저장

2-1. 데이터 종류

  1. 정형 데이터 : 엑셀에 들어갈 법한 데이터들. 스키마가 있다. 
  2. 반정형 데이터
    • 이메일 (보낸 사람, 받는 사람,제목, 본문 내용) : 자유도가 높으나 정해진 구조가 어느정도 있다. 
  3. 비정형 데이터
    • 음성, 영화, 이미지, 음성
    • 갈수록 기하급수적으로 늘어나고 있다.
    • 다루기 까다로운데, 이런 데이터를 AI를 통해서 쉽게 다뤄지고 있다. 
    • 다루기 쉽도록 비정형 데이터를 정형데이터로 변환하기도 한다.

 

2-2. 데이터베이스 특징

  • 실시간 접근성: 질의에 즉각처리하여 응답
  • 계속전 진화:  항상 최신화 가능
  • 동시 공유: 다수의 유저가 접속시 같은 데이터를 보여줌
  • 내용에 의한 참조: 데이터 참조시 튜플의 주소나 위치가 아닌 사용자가 요구하는 데이터 내용에 따라 참조. 권한 제어.
  • 데이터 논리적 독립성: 응용프로그램과 디비 독립시켜서 데이터 논리적 구조 변경시켜도 응용 프로그램 변경 안됨. ex)카톡 박살나더라도 디비가 멀쩡하여 로그인정보 보존할 수 있으면 됨

 

3. DBMS (Database Management System)

  • 파일 시스템
  • dbeaver 같은 프로그램으로 데이터 조회 및 조작 가능
  • app (dbeaver) <-> dbms (폴더파일) <-> mysql  server 로 상호작용

라이브러리를 통해 mysql 서버 연결

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. 순서

  1. 업무 파악: 무엇을 만들어야 하나? 
    • 블로그를 어떤식으로 만들 것인가에 대한 정리
  2. 설계 / 개념적 데이터 모델링 (ERD: Entity Relationship Diagram 작성) : 도식화
    • 게시글 id, 로그인 정보, 글쓴이 등등 을 도식화하여 구상
  3. 설계 / 논리적 데이터 모델링
    • 데이터 타입 정의 (로그인 상태: Bool, 게시글 id: int ) 
    • 일대다 등의 논리적 관계도 구상
  4. 설계 / 물리적 데이터 모델링 (테이블 만들기)
    • 개체, 인덱스 생성
  5. 데이터베이스 구현

4-2. 실습

 

ERDCloud

Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.

www.erdcloud.com

 

☁️ ERD CLOUD - ERD 다이어그램을 온라인에서 그려보자

ERD CLOUD 프론트엔드 작업을 하기전에 UI 와이어프레임을 그리는 과정은 중요하듯이, 백엔드에서도 데이터베이스 모델링 설계 과정은 매우 중요하다. 데이터베이스 모델링을 할 때 ERD 다이어그램

inpa.tistory.com

 

 

배달 어플 저기요 만들기

[업무 파악]

  1. 식당 정보
    • 식당 id, 음식 종류,음식명, 가격, 사진,주소
  2. 음식 주문
    • 주문 id, 식당 id, 음식 id, 주문한 음식 갯수, 고객 id, 주문 날짜
    • 주문상태 (조리중, 배달중, 주문 거절,주문 완료,배달완료)
  3. 음식 리뷰
    • 리뷰id, 이미지,리뷰 내용, 별점 (1~5), 주문 id, 리뷰 날짜
  4. 고객 정보
    • 주소, 고객 id, 연락처

뭔가..많이 어설프다...이런건 처음 만들어본다.

5. dbeaver

 

 

아이디 별로 권한이 달라 테이블 조회하면 다르게 뜬다.
DB선택

  • 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도 배워야 한다. 파이썬까지는 그래도 할만했는데, 앞으로 조금씩 힘들어질 것 같다. 그리고 목디스크가 와서 목이 너무 아프다. 거북목 스트레칭을 매일 자기전에 해야겠다.