
테이블(Relation)이 제 1정규형을 만족했다는 것은 아래 세 가지 조건를 만족했다는 것을 의미합니다.어떤 Relation에 속한 모든 Domain이 원자값(atomic value)만으로 되어 있다.모든 attribute에 반복되는 그룹(repeating group)이 나타나지 않는다.기본 키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다. 1. 원자값이 아닌 데이터제 1정규형의 첫 번째 조건은 모든 도메인이 원자값으로 구성되어야 한다는 것원자값이 아닌 예 (수강 과목)위 표에서 '수강 과목' 필드에 여러 과목이 쉼표로 구분되어 들어가 있어, 이 필드가 원자값이 아님. 2. 반복 그룹이 있는 데이터제 1정규형의 두 번째 조건은 속성에 반복되는 그룹이 나타나지 않아야 한다는 것.위..
서브쿼리의 개념SQL 문장 내에서 다른 SQL 쿼리를 내포하는 구문입니다.보통 소괄호 ( ) 안에 작성되며, 메인 쿼리(main query) 또는 외부 쿼리(outer query)라고 하는 더 큰 SQL 쿼리의 일부로 존재합니다.메인 쿼리에 의해 반환된 데이터를 기반으로 추가적인 조건을 적용하거나, 메인 쿼리의 조건을 정의하는 데 사용됩니다. 서브쿼리를 사용하는 이유복잡성 감소: 복잡한 쿼리를 더 작고 관리하기 쉬운 부분으로 나누어 처리할 수 있습니다.재사용성: 같은 서브쿼리를 여러 쿼리에서 재사용할 수 있어, 코드의 중복을 줄이고 유지 보수를 용이하게 합니다.명확성: 데이터의 특정 부분에 대해 명확한 조건을 설정할 수 있으며, 읽기 쉽고 이해하기 쉬운 쿼리를 작성할 수 있습니다. 서브 쿼리의 종류서브쿼..

1. 트랜잭션 관리(commit, rollback)트랜잭션은 여러 SQL 문을 하나의 작업 단위로 묶어주는 것을 의미합니다. commit은 트랜잭션을 완료하여 변경사항을 저장하고, rollback은 트랜잭션을 취소하여 변경사항을 되돌립니다. 트랜잭션의 개념과 중요성트랜잭션의 개념:트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적인 작업 단위를 의미합니다. 여러 SQL 문이 하나의 작업으로 묶여서 실행됩니다.트랜잭션은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)의 특성을 갖습니다. 이를 ACID 특성이라고 합니다.원자성 (Atomicity) 원자성은 트랜잭션의 모든 작업이 성공적으로 완료되거나, 전혀 실행되지 않은 상..

1단계 Table 설계 및 Data 입력use mydb3;create table tb_categories( category_id int auto_increment primary key, category_name varchar(100) not null);insert into tb_categories(category_name) values('상의');insert into tb_categories(category_name) values('하의');insert into tb_categories(category_name) values('외투');create table tb_products( product_id int auto_increment primary key, product_name v..
DriverManager를 이용한 연결DriverManager 클래스는 JDBC 드라이버를 관리하고 데이터베이스와의 연결을 설정하는 데 사용됩니다.드라이버 로드:먼저 JDBC 드라이버를 메모리에 로드합니다.try { Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 드라이버 로드} catch (ClassNotFoundException e) { e.printStackTrace();} 데이터베이스 연결DriverManager.getConnection() 메소드를 사용하여 데이터베이스와의 연결을 설정합니다. 예제 코드String url = "jdbc:mysql://localhost:3306/mydatabase?serverTimezone=Asia/Seoul..
JDBC 드라이버 설치다양한 DBMS별 JDBC 드라이버 설치 방법이 존재 합니다. 1. MySQL드라이버 다운로드:MySQL의 공식 웹사이트에서 MySQL Connector/J를 다운로드합니다.MySQL Connector/J 다운로드드라이버 설정:다운로드한 ZIP 파일을 압축 해제합니다.mysql-connector-java-.jar 파일을 Java 프로젝트의 클래스패스에 추가합니다.IDE (예: IntelliJ, Eclipse)를 사용하는 경우, 프로젝트 설정에서 라이브러리를 추가하여 JAR 파일을 클래스패스에 포함시킬 수 있습니다. 2. Oracle드라이버 다운로드:Oracle의 공식 웹사이트에서 JDBC 드라이버를 다운로드합니다.Oracle JDBC 드라이버 다운로드드라이버 설정:다운로드한 JAR..
DB 및 Table 생성create database m_board;use m_board;create table user( id int primary key auto_increment, username varchar(100) not null unique, -- 닉네임(중복 검사 가능) password varchar(255) not null, email varchar(100) not null, userRole varchar(20), createDate timestamp);-- board table(게시글), reply table(댓글) (1 : N)create table board( id int primary key auto_increment, userId int,..

주문(orders) 테이블과 주문 상세(order_details) 테이블을 분리하여 설계한 이유는?=> 데이터베이스 정규화 원칙에 기반한 것 정규화는 데이터베이스 설계에서 중요한 과정으로, 데이터 중복을 최소화하고, 데이터 무결성을 향상시키며,수정, 삽입, 삭제 등의 데이터베이스 작업 시 발생할 수 있는 문제점들을 방지하기 위해 사용됩니다. 주문과 주문 상세 테이블 분리의 목적 중복 제거: 주문 정보와 주문 상세 정보를 하나의 테이블로 관리할 경우, 주문 정보(예: 주문자 ID, 주문 날짜)가 각 주문 상품마다 반복적으로 저장됩니다. 이는 데이터 중복을 초래하고, 디스크 공간을 불필요하게 사용하게 합니다. create table User( id int primary key auto_incr..
Self join은 하나의 테이블 내에서 자기 자신을 조인하는 것을 의미합니다. 이는 동일한 테이블에서 서로 다른 행을 비교하고 조작하는 데 사용됩니다. Self join을 사용하면 동일한 열을 가진 두 개의 서로 다른 인스턴스 간의 관계를 파악하거나 계층적인 구조를 나타낼 때 유용합니다. 예를 들어, 조직 구조에서 각 직원이 직속 상급자의 정보를 확인해야 할 때 self join을 사용할 수 있습니다. 각 직원은 같은 테이블에 저장되어 있지만, 상급자와 직속 부하 직원 간의 관계를 파악하기 위해 자기 자신과의 조인을 수행합니다. create table employees( employee_id int, employee_name varchar(255), employee_phone varc..

정규화데이터베이스에서 정규화는 데이터를 조직화하고 중복을 최소화하기 위해 데이터베이스 테이블의 설계를 시스템적으로 개선하는 과정입니다. 정규화를 통해 데이터의 무결성과 일관성을 유지하면서 효율적인 데이터 관리가 가능해집니다 정규화(Normalization)의 기본 목표테이블 내에서 발생할 수 있는 데이터의 중복을 최소화하여 이상 현상을 방지하고, 데이터 무결성을 유지하는 것입니다. 데이터의 무결성(Integrity)은 데이터베이스 관리 시스템에서 데이터의 정확성, 일관성 및 신뢰성을 유지하는 특성을 말합니다. 데이터베이스 내의 정보가 정확하고 일관된 상태로 유지되고 시스템에서 정의한 규칙, 제약 조건, 비즈니스 규칙을 준수하여 데이터의 품질을 보장하며, 응용 프로그램과 사용자가 신뢰할 수 있는 데이터에 ..