DB 정규화, 역정규화, 이상현상
·
Backend/DB
정규화RDB에서 중복을 제거하고, 데이터 구조를 논리적으로 분해하여 삽입, 삭제, 갱신 이상을 방지하고일관성 있는 구조를 만드는 과정제 1정규형 (1NF: First Normal Form)모든 컬럼은 원자값만 가져야 함👉 한 셀에는 하나의 값만 있어야 한다.수강 과목이 여러 값을 가짐 = `비정규형`정규화 후제 2정규형 (2NF: Second Normal Form)1NF 만족`부분 함수 종속 제거` 👉 기본 키가 복합키일 경우, 일부 키에만 의존하는 속성 제거기본 키 (학번, 수강 과목) → 하나의 학생이 여러 과목 수강성적은 기본키 전체에 종속 됨 = OK이름은 학번으로만 결정됨 = 부분 종속! (2NF 위반)제 3정규형 (Third Normal Form)2NF 만족이행적 함수 종속 제거 👉 A ..
스키마 3계층
·
Backend/DB
데이터베이스를 사용자와 시스템 관점에서 나누어 설계하기 위해 ANSI/SPARC 모델에서 제안한 개념총 3가지 수준으로 나누어 DB 정의외부 스키마 개념 스키마내부 스키마이 구조는 데이터 독립성을 보장하는 핵심 메커니즘이다.외부 스키마 (External Schema)사용자 관점의 스키마각 사용자 또는 응용프로그램이 보는 부분적인 데이터 구조하나의 DB에 대해 여러 개 존재 가능 (사용자마다 다름)-- 실제 테이블에는 이름, 나이, 급여, 주소 등이 있지만-- 외부 사용자 1은 이름과 급여만 조회하도록 설계SELECT name, salary FROM employees;개념 스키마 (Conceptual Schema)DB 전체를 통합적으로 표현한 논리 구조모든 사용자와 응용 프로그램에 공통으로 보이는 구조관계..
RDB와 NoSQL 비교
·
Backend/DB
RDB (Relational Database)관계형 데이터베이스는 가장 많이 사용되고 있는 DB 중 하나로, 데이터를 테이블 형태로 표현하여 구조화각 테이블은 `행`과 `열`으로 이루어져 있으며, 테이블 간의 관계를 맺어서 데이터를 조직적으로 관리// MySQL-- Users 테이블+----+--------+----------------------+| ID | Name | Email |+----+--------+----------------------+| 1 | 철수 | chulsoo@gmail.com |-- Orders 테이블 (user_id 외래 키)+----+----------+-----------+| ID | user_id | Product |+---..
키 (Key), 인덱스 (Index)
·
Backend/DB
KEY 는 DB에서 레코드를 고유하게 식별하는 데 사용되는 속성 또는 속성들의 집합을 의미Key의 종류이름설명슈퍼 키 (Super Key)유일성을 만족하는 키, ex) 학번 + 이름, 주민번복합 키 (Composite Key) 2개 이상의 속성을 사용한 키후보 키 (Candidate Key) 유일성과 최소성을 만족하는 키, 기본키가 될 수 있는 후보이므로 후보 키라고 불림기본 키 (Primary Key) 후보 키에서 선택된 키, NULL값과 중복 허용 X대체 키 (Surrogate Key) 후보 키 중에서 기본 키로 선택되지 않은 키외래 키 (Foreign Key) 어떤 테이블 간의 기본 키를 참조하는 속성테이블 간의 관계를 나타내기 위해 사용예시) 학생 테이블 학생ID 이름이메일학번반번호1철수chuls..
JDBC 프로젝트 생성
·
Backend/JAVA
JDBC 프로젝트 1. 프로젝트 생성 & build.gradleJDBC & Lombok 라이브러리 추가 코드// MySQL JDBC 드라이버 추가implementation 'com.mysql:mysql-connector-j:8.4.0' // lombok 추가compileOnly 'org.projectlombok:lombok:1.18.38'annotationProcessor'org.projectlombok:lombok:1.18.38'testCompileOnly 'org.projectlombok:lombok:1.18.38'testAnnotationProcessor 'org.projectlombok:lombok:1.18.38'2. Intellij Datasource 기능 설정3. SQL 파일 생성`jdb..
JDBC
·
Backend/JAVA
JDBC (Java Database Connectivity)자바에서 DB에 접근하기 위한 표준 API즉, 자바 애플리케이션이 DBMS 종류와 상관 없이 동일하게 사용할 수 있는 클래스와 인터페이스로 구성JDBC API (java.sql 패키지에 포함)자바 프로그램에서 DB와 연결하고 SQL문을 실행하며, 결과를 처리할 수 있도록 돕는 표준 라이브러리JDBC 드라이버특정 DB에 맞는 구현체예) MySQL 용 JDBC 드라이버 = mysql-connector-j👉 DB가 바뀌더라도, 구현체만 바꾸면 애플리케이션에서 수정 사항을 최소화 할 수 있음JDBC의 핵심 인터페이스 / 클래스DriverManager: JDBC 드라이버 로드, DB 연결 관리Connection: DB와의 연결을 나타냄Statement:..
SQL 기초
·
Backend/DB
SQL 기초 정리1. SELECT로 데이터 조회SELECT 열 FROM 테이블;SELECT first_name AS 이름 FROM employees;2. WHERE 절WHERE절은 조회하는 결과에 특정한 조건을 주어 원하는 데이터만 보고 싶을 때 사용형식: `SELECT 필드이름 FROM 테이블 이름 WHERE 조건식;`1) BETWEEN ... AND-- 관계 연산자 & 조건 연산자SELECT userid, name FROM usertblWHERE birthyear >= 1970 AND height >= 182;-- BETWEEN ... AND 사용SELECT name FROM usertbl WHERE height BETWEEN 180 AND 183;2) IN연속적인 값이 아닌, 이산적인 값인 `경남`..
컬렉션 프레임워크
·
Backend/JAVA
자바는 널리 알려진 자료구조를 바탕으로, 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 관련된 인터페이스와 클래스들을 `java.util` 패키지에 포함시켜 놓음👉 이를 총칭하여 컬렉션 프레임워크라고 부름List와 Set은 객체를 추가, 삭제, 검색하는 방법에 있어서 공통점이 있기에 공통된 메소드만 따로 모아 Collection 인터페이스로 정의 & 상속Map은 키와 값을 하나의 쌍으로 묶어서 관리하는 구조로 List와 Set 과는 사용방법이 다름❓ 인터페이스로 구현한 이유처음에는 공유 코드가 없어서 인터페이스로 설계 했으나, 시간이 흐르며 공통 기능이 필요해졌고 이를 해결하기 위해 `default` 메서드가 도입 됨인터페이스 분류특징구현 클래스CollectionList순서를 유지하고 저장중복 저..