8일 차 회고.
토이 프로젝트 주제를 정했는데, 배우면서 이를 실전에 적용해 본다는 느낌으로 하는 프로젝트라 내가 배운 내용을 온전히 복습할 수 있는 시간이 없는 것 같다. 그래도 전체적인 가이드라인은 잡아서 열심히 해볼 예정이다.
1. MySQL
1-1. MySQL 개발 환경
1-1-1. Docker
Docker는 1일 차에 설치하였기 때문에 확인한다.

1-1-2. DBeaver
DBeaver 또한 1일 차에 설치했다.

새 데이터베이스에 연결한다.
이때, 'Test Connection...'을 누르면 Connection error가 뜨는데,
이는 'Driver Properties' 탭에서 'allowPublicKeyRetrieval'의 값을 'true'로 바꾸어주면 해결이 된다.


SQL 편집기를 열어 데이터베이스를 조회할 수 있다.
이때, 계정별(root, urstory)로 접근 권한을 다르게 설정이 되어있다는 것을 알 수 있다.
show databases;


데이터베이스 별로 테이블을 조회할 수 있다.
show tables;


2. 데이터베이스
2-1. 데이터(Data)
데이터는 스키마(Schema) 데이터의 구조와 제약 조건에 대한 것들을 정의한 것을 말한다.
데이터는 정형 데이터(ex. Excel 등), 반정형 데이터(ex. e-mail 등), 비정형 데이터(ex. 소설, 음성 등)로 구분된다.
2-1-1. 데이터의 종류
- 정형 데이터(Structured Data): 고정된 필드에 저장된 데이터
- 반정형 데이터(Semi-Structured Data)는 고정된 필드에 저장되어 있지는 않지만, 메타 데이터나 스키마 등을 포함하는 데이터
- 비정형 데이터(Unstructured Data Data): 고정된 필드에 저장되어 있지 않은 데이터
2-2. 데이터베이스(DB; Database)
데이터베이스는 데이터의 집합을 말한다.
2-2-1. 데이터베이스의 특징
- 실시간 접근성(Real time accessibility): 사용자의 질의에 대해 즉시 처리하여 응답한다.
- 계속적인 진화(Continuous evolution): 삽입, 삭제, 갱신을 통하여 항상 최근의 정확한 데이터를 동적으로 유지한다.
- 동시 공유(Concurrent sharing): 여러 사용자가 동시에 원하는 데이터를 공유할 수 있다.
- 내용에 의한 참조(Content reference): 데이터베이스에 있는 데이터를 참조할 때 튜플(tuple)의 주소나 위치가 아니라 사용자가 요구하는 데이터 내용에 따라 참조한다.
- 데이터 논리적 독립성(Independence): 응용 프로그램과 데이터베이스를 독립시켜 데이터 논리적 구조를 변경하더라도 응용 프로그램은 변경되지 않는다.
2-3. 데이터베이스 관리 시스템(DBMS; Database Management System)
DBMS는 데이터베이스를 조작하는 별도의 소프트웨어로,
이를 통해 데이터 베이스를 관리하여 응용 프로그램들이 데이터베이스를 공유하고, 사용할 수 있는 환경을 제공한다.
2-3-1. DBMS의 기능
- 정의: 데이터에 대한 형식, 구조, 제약조건들을 명세한다.
- 구축: DBMS가 관리하는 기억 장치에 데이터를 저장한다.
- 조작: 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 보고서 생성 기능 등을 포함한다.
- 공유: 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 한다.
- 보호: 하드웨어나 소프트웨어의 오작동 또는 권한이 없는 악의적인 접근으로부터 시스템을 보호한다.
- 유지보수: 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 한다.
2-3-2. DBMS 유형
- 관계형 데이터베이스 관리 시스템(RDBMS; Relational DBMS)
- 관계형 데이터베이스(RDB)
- 테이블, 행, 열의 정보를 구조화하는 방식
- 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있어, 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있다.
- RDBMS 종류
- Oracle, MySQL, PostgreSQL 등
- 관계형 데이터베이스(RDB)
- NoSQL DBMS
- NoSQL
- 비관계형 데이터베이스
- 관계형 데이터 모델을 지양하며 대량의 분산된 데이터를 저장하고 조회할 수 있으며, 스키마 없이 사용할 수 있거나 느슨한 스키마를 제공하는 저장소이다.
- NoSQL DBMS 종류
- MongoDB, Hbase, EynamoDB 등
- NoSQL
2-4. 데이터 모델링
2-4-1. 데이터 모델링
- 데이터 모델링
- 데이터 모델링은 정보시스템 구축의 대상이 되는 업무 내용을 분석하여 이해하고 약속된 표기법에 의해 표현하는 것
- 이렇게 분석된 모델을 통해 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용한다.
- 데이터 모델링 순서
- 업무 파악(요구사항 수집 및 분석)
- 개념적 데이터 모델링(ERD 작성)
- Entity를 도출하고 ERD를 작성한다.
- 중요 개념을 구분한다.
- 논리적 데이터 모델링
- ERD를 사용할 특정 DBMS의 논리적 자료구조에 맞게 Mapping 한다.
- 각 개념을 구체화한다.
- 물리적 데이터 모델링
- 최종적으로 데이터를 관리할 데이터베이스를 선택하고, 선택한 데이터베이스에 실제 테이블을 만든다.
- 데이터베이스 생성 계획에 따라 개체, 인덱스 등을 생성한다
2-4-2. ERD(Entity Relationship Diagram)
ERD는 개체(Entity)와 관계(Relationship)를 중점적으로 표시하여 데이터베이스 구조를 한눈에 알아보기 위해 그린 다이어그램을 말한다.
- 개체(Entity)
- 정의 가능한 사물 또는 개념
- 데이터베이스의 테이블로 표현한다.
- 속성(Attribute)
- 테이블의 각 필드로 표현한다.
- 도메인(Domain)
- 속성의 값, 타입, 제약사항 등
- 기본 키(Primary Key)
- 중복이 없고, NULL 값이 없는 유일한 값으로 각 레코드를 식별할 수 있다.
- 외래 키(Foreign Key)
- 다른 테이블의 기본 키를 참조하여, 두 테이블 간의 관계를 설정한다.
- 식별자 관계
- 하위 테이블이 상위 테이블의 기본 키를 외래 키로 참조한다.
- 비식별자 관계
- 하위 테이블이 상위 테이블의 기본 키를 외래 키로 참조하여 일반 속성으로 사용한다.
2-4-3. 데이터 모델링 실습 - '저기요'
- 개념적 데이터 모델링
- '저기요' 기능
- 식당 정보
- 식당 ID, 식당 이름, 식당 종류, 식당 소개, 식당 사진, 식당 연락처, 식당 주소
- 음식 정보
- 음식 ID, 음식 종류, 음식 이름, 음식 사진, 음식 소개, 음식 가격
- 식당 ID
- 음식 주문
- 주문 ID, 주문 날짜, 음식 개수, 주문 상태
- 식당 ID, 음식 ID, 고객 ID
- 고객 정보
- 고객 ID, 고객 이름, 고객 연락처, 고객 주소
- 리뷰
- 리뷰 ID, 리뷰 날짜, 별점, 리뷰 사진, 리뷰 내용
- 식당 ID, 음식 ID, 고객 ID, 주문 ID
- 식당 정보
- '저기요' 기능
- 논리적 데이터 모델링

3. DDL
3-1. DDL(Data Definition Language)
DDL은 데이터베이스와 테이블을 정의(생성), 수정, 삭제할 수 있는 명령어이다.
이는 보통 root 계정에서 사용할 수 있고, 그 외 계정에는 권한이 부여되어야 사용할 수 있다.
3-1-1. 데이터베이스 생성, 조회, 사용, 삭제
create database dbname; # dbname 데이터베이스 생성
show databases; # 데이터베이스 목록 조회
use dbname; # 데이터베이스 사용
drop database if exists dbname; # 데이터베이스 삭제
3-1-2. 테이블 생성, 조회, 삭제
create table student ( # student 테이블 생성
student_id int unsigned auto_increment,
student_name varchar(10) not null,
student_address varchar(50) null,
create_dt timestamp default now(),
modify_dt timestamp default now(),
primary key(student_id)
);
show tables; # 테이블 목록 조회
desc student; # student 테이블 스키마 조회
drop table if exists student; # 테이블 삭제
'SK네트웍스 Family AI캠프 10기 > Daily 회고' 카테고리의 다른 글
| 10일차. DML & Streamlit (0) | 2025.01.20 |
|---|---|
| 9일차. DCL & DML (0) | 2025.01.17 |
| 7일차. 클래스 & 라이브러리 (0) | 2025.01.15 |
| 6일차. 함수 & 클래스 (0) | 2025.01.14 |
| 5일차. 함수 (0) | 2025.01.13 |