- 강의
- 78강(MySQL 제약조건 익히기) ~ 81강(DB wrap-up)
데이터베이스 모델링
- 현실 세계의 데이터를 추상화하여 DB 구조를 설계하는 전체 과정
- 단계 : 요구사항 분석 → 개념적 데이터 모델링 → 논리적 데이터 모델링 → 물리적 데이터 모델링
요구사항 분석
- 유저 시나리오 구상
- 엔티티 추출
- 요구사항 도출
개념적 데이터 모델링
- 개념적 데이터 모델 : 객체 간의 상호작용을 판단하는 과정
- 엔티티 간의 관계 설계
- ERD 그리기 : 선택성과 기수성에 초점 두기
- ERD : Entity Relationship Diagram
논리적 데이터 모델링
- 비즈니스 정보의 논리적 구조와 규칙을 명확하게 표현하는 과정
- 정규화 진행
- 테이블화 및 테이블간의 관계 표현
물리적 데이터 모델링
- 정의된 테이블을 물리적으로 구현하는 과정
- 하드웨어 과정
- RDB 선택
- 스토리지 구성
- DB 클러스터링
- DB 설계 및 권한
- DB 권한 부여
- 성능 향상을 위한 튜닝
JDBC
- JDBC 프로그래밍
- java에서 SQL 구문을 이용해서 RDB 구현하는 프로그램
- 작업 순서
- DriverManger → Connection → Statement → ResultSet
- 실습
- gradle에 의존성 추가
- Connection 얻기, Statement 생성, ResultSet 값 조회
- 코드 : https://github.com/kung036/java_task/blob/test/src/practice/day20240524/JdbcTest.java
// gradle JDBC 설정
dependencies {
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'
// jdbc
implementation 'mysql:mysql-connector-java:8.0.27'
}
package practice.day20240524;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcTest {
/*
< 실행 >
1. 1000원 이상 산 group singer를 구하는 SELECT 문을 JDBC로 실행해보자.
2. Group_singe에 새로운 singer ”르세라핌”을 넣어 INSERT 문을 JDBC로 실행해보자.
*/
// Connection 얻기 위한 접근 정보
private final static String DB_URL = "jdbc:mysql://localhost:3306/chapter_80";
// jdbc:mysql: : jdbc 프로토콜, mysql 기술
// localhost:3306 : 서버 URL
// chapter_80 : MySQL DB
private final static String DB_USER = "root";
private final static String DB_PASSWORD = System.getenv("DB_PW");
public static void main(String[] args) {
try (Connection connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); // Connection 얻기
Statement statement = connection.createStatement(); // Statement 얻기
) {
// Statement 생성
// 1. 1000원 이상 산 group singer를 구하는 SELECT 문을 JDBC로 실행해보자.
String stringSQL1 = "SELECT * " +
"FROM group_singer G" +
" JOIN buy_history B" +
" ON G.mem_id = B.mem_id " +
"WHERE B.price >= 1000;";
ResultSet resultSet1 = statement.executeQuery(stringSQL1);
// ResultSet 조회
while (resultSet1.next()) {
String memId = resultSet1.getString("mem_id");
String memName = resultSet1.getString("mem_name");
String price = resultSet1.getString("price");
System.out.println("memId : " + memId + " memName : " + memName + " price : " + price);
}
// 2. Group_singe에 새로운 singer ”르세라핌”을 넣어 INSERT 문을 JDBC로 실행해보자.
String stringSQL2 = "INSERT INTO group_singer (mem_id, mem_name, mem_number, addr, phone, height, debut_date) " +
"VALUES ('M2', '르세라핌2', 2, '서울', '01012345678', 170, '2019-01-01')";
statement.executeUpdate(stringSQL2);
} catch (Exception e) {
e.printStackTrace();
}
}
}
'슈퍼코딩 > 주특기(JAVA)' 카테고리의 다른 글
2024.05.27(월) 슈퍼코딩 신입연수원 9주차 Day 1 후기 - 네트워크, 프로토콜, HTTP, Web API (0) | 2024.05.27 |
---|---|
슈퍼코딩 신입연수원 8주차 후기 (0) | 2024.05.25 |
2024.05.23(목) 슈퍼코딩 신입연수원 8주차 Day 4 후기 - RDBMS, JOIN, MySQL 제약조건 (0) | 2024.05.23 |
2024.05.22(수) 슈퍼코딩 신입연수원 8주차 Day 3 후기 - SQL 기초 문법 (0) | 2024.05.22 |
2024.05.21(화) 슈퍼코딩 신입연수원 8주차 Day 2 후기 - RDBMS (0) | 2024.05.21 |