SWLUG(2026)/유지보수

[3주차] DB 설명 및 설계 & 프로젝트 실습 1차

batterygj 2026. 5. 6. 17:05
MYSQL MongoDB
관계형 데이터베이스 NoSQL 데이터베이스
row document
table collection
database database

 

- row, document : 가장 작은 데이터 단위

- table, collection : 관련 있는 데이터를 모아둔 그룹

- 가장 큰 단위: database


테이블 설계 방법

01. 데이터 유형

1. 숫자형(int, double)

2. 문자형(char, varchar) 

+) char은 고정 길이, varchar은 가변 길이

3. 날짜 및 시간 타입 (date, datetime, timestamp)


02. 컬럼의 속성

: 각 컬럼에 추가적으로 설정할 수 있는 제약 조건으로 *데이터 무결성을 지키기 위한 것

* 데이터의 정확성, 일관성, 유효성이 유지되는 것을 보장

 

1. Primary key(PK)

각 행을 식별하는데 사용되는 고유한 식별자

 

2. Foreign key(FK)

다른 테이블의 기본 키와 관계를 나타내는 컬럼

 

3. Unique 속성

중복된 값을 허용하지 않음

 

4. Not NULL 

NULL 값을 허용하지 않음

 

5. default

자동으로 할당되는 값


03. 관계의 유형

*JOIN : 둘 이상의 테이블에서 데이터를 조회하기 위한 방법

 

일대일 관계 : 하나의 A는 하나의 B를 갖는다, 하나의 B는 하나의 A를 갖는다

다대일 관계 : 하나의 A는 여러개의 B를 갖는다. 하나의 B는 하나의 A를 갖는다.

다대다 관계 : 하나의 A는 여러개의 B를 갖는다. 하나의 B는 여러 개의 A를 갖는다.


04.  SQL

1. SELECT - 데이터 조회

SELECT * FROM student;  // student 테이블에서 모든 컬럼(*)의 데이터를 가져옴

 

2. INSERT - 새로운 데이터를 테이블에 삽입할 때 사용

INSERT INTO student (id, name, major) VALUES (1, '김건지', '정보보호학과');

 

3. DDL CREATE - 새로운 데이터베이스 객체를 생성할 때 사용. 아래의 경우는 테이블 생성

CREATE TABLE student(
	id int AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(255) NOT NULL,
	major VARCHAR(255) NOT NULL,
);

+) id 컬럼: 정수타입, 데이터 추가 시 자동 증가(AUTO_INCREMENT), 고유 식별자(PRIMARY KEY)

+) name, major컬럼: 최대 255자의 가변 문자열(VARCHAR), 빈 값 허용 안함(NOT NULL)

 

 

 

실습)) 데이터베이스 “swlug26”를 만들고, swlug26에 “student” 테이블을 만들어주세요. ‘student”릴레이션의 카디널리티는 2로 하고, 릴레이션의 차수는 3으로 속성은 자유롭게 해주세요.

--swlug26 데이터베이스 생성
CREATE DATABASE swlug26;
--swlug26 데이터 베이스 선택
SHOW DATABASES;
USE swlug26;
--student 테이블 생성
CREATE TABLE student(
	id int AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(255) NOT NULL,
	major VARCHAR(255) NOT NULL,
);
-- 데이터 삽입
INSERT INTO student (id, name, major) 
VALUES (1, '김세은', '정보보호학과');
VALUES (2, '김건지', '정보보호학과');

 


05.  CRUD

:데이터의 처리를 관리하는 4가지 기본연산

 

1. Create: 새로운 데이터 추가

2. Read: 저장된 데이터 검색

3. Update: 저장된 데이터 편집

4. Delete: 저장된 데이터 삭제


06.  User Table 설계

1. 필요한 데이터가 무엇인지

: 이름, 아이디, 비밀번호

 

2. 데이터의 유형

이름 - 문자열

아이디 - 문자열

비밀번호 - 문자열

 

3. 속성 체크

이름, 아이디, 비밀번호 - 필수(Not NULL)

아이디 - 중복방지(unique)

  데이터 타입 NULL 허용 추가 속성
id int FALSE Auto_increment
name varchar FALSE  
userId varchar FALSE unique
password varchar FALSE  

 


프로젝트 실습 1차 - 쇼핑몰 프로젝트


01. 상품 등록 및 조회

02. 장바구니

03. 주문하기

04. 회원가입 / 로그인

( REST API 사용 예정 ):REST라는 규칙(자원을 이름으로 구분하여 그 상태정보를 주고받는 아키텍쳐)을 지키면서 서버의 데이터를 가져오거나 수정할 수 있도록 함


 

1. Spring Initializr 페이지 접속 후 프로젝트 세팅

 


 

2. 프로젝트 생성 후 다운로드 / 압축 풀기


 

3. IntelliJ -> open -> 다운받은 파일 선택


 

4. 프로젝트 생성 완료

+) Spring Initializr를 통해 생성하였기 때문에 자동 구성 기능을 실행해주는 @SpringBootApplication이 추가되어있음


5. 레포지토르 fork 받기


 

DB  생성

1. 터미널 -> mysql 

 


2. database 생성

#database 생성
create database [데이터베이스명];

#생성된 database 확인
show databases;

 

 


3. 디렉터리 생성 후 코드 작성

: resources 디렉토리 하위에 application.properties 파일 생성 후 설정 파일 코드 작성

spring.application.name=shop  // 애플리케이션의 이름을 shop으로 지정

#MYSQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/{DB명}?sercerTimezone=UTC
spring.datasource.username={username}
spring.datasource.password={password}

#실행 쿼리 출력
spring.jpa.properties.hibernate.show_sql=true

#쿼리 포맷 설정
spring.jpa.properties.hibernate.format_sql=true

#바인드 파라미터 출력
logging.level.org.hibernate.type.descriptor.sql=trace

#데이터베이스 초기화 전략 - DDL AUTO 옵션
spring.jpa.hibernate.ddl-auto=create

#데이터베이스 방언 설정
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

 

+) driver-class-name  ; 자바와 MYSQL을 이어주는 통역사(Driver)지정

 localhost : 3306 ; 내 맥북 내부 주소

ddl-auto=create ; 애플리케이션이 시작될 때 기존 테이블을 다 삭제(Drop)하고, 엔티티 코드를 바탕으로 새 테이블을 생성(Create)

database-platform ; MYSQL 8 버전 특유의 SQL문법을 사용하도록 지정


DDL AUTO 옵션

: 엔티티 객체를 참고하여 애플리케이션 실행 시점에 nibernate에서 자동으로 DDL을 만들때 옵션

+) 엔티티: Entitiy. 데이터베이스의 테이블과 1:!로 대응되는 자바 클래스

DDL: Data Definition Language

 

- none : 아무것도 하지 않음(실제 배포시)

- create : 기존 테이블 삭제 후 테이블 생성

- create-drop : 기존 테이블 삭제 후 테이블 생성 + 종료시 테이블 삭제

- update : 변경된 스키마 적용하여 데이터 유지

-validate : 엔티티와 테이블 정상 매핑 확인


 

4. 정상실행 확인


 

깃허브 계정