정규화정처기할때 "도부이결다조" 로만 공부했던 정규화에 대해 알아보고자합니다..정규화(Normalization)는 데이터베이스 설계에서 중복을 최소화하고 일관성을 유지하기 위해 데이터를 분해하는 과정입니다. 데이터베이스에서 중복된 데이터를 제거하고, 데이터 간의 관계를 명확하게 하기 위해 사용됩니다.정규화의 목적중복 최소화: 동일한 데이터가 여러 번 저장되는 것을 방지.데이터 무결성 유지: 잘못된 데이터 입력을 방지.수정 이상 방지: 데이터 수정 시, 다른 관련 데이터도 자동으로 수정되도록 한다.비정규화 상태 (1NF 미만)고객 주문 데이터베이스를 예로 들겠습니다. 하나의 테이블에 고객 정보와 주문 내용을 모두 저장한다고 가정해 봅시다.고객ID고객명주문1주문2주문3001홍길동사과배바나나002김철수딸기 ..
더블터치시 자동확대 막는법오늘은 모바일 브라우저에서 확대/축소 기능을 끄는 방법에 대해서 알아보겠습니다. 1. HTML 메타태그 방식 태그에 user-scalable=no 속성을 추가하면, 사용자가 페이지를 확대/축소할 수 없게 됩니다 width=device-width : 화면 너비에 맞춰 페이지를 설정합니다.initial-scale=1 : 페이지 로드시 기본 확대 비율을 1로 설정합니다.maximum-scale=1 : 최대 확대 비율을 1로 설정하여 확대를 제한합니다.user-scalable=no : 사용자가 확대/축소할 수 없게 만듭니다.2. JS방식저는 meta 방식이 안먹혀서 js방식을 사용했더니 바로 됐습니다!document.documentElement.addEventListener('tou..
DAO 설계DAO(Data Access Object)는 데이터베이스에 접근하기 위한 로직을 관리하기 위한 객체입니다. 비즈니스 로직의 동작 과정에서 데이터를 조작하는 기능은 DAO 객체가 수행합니다. 다만 스프링 데이터JPA에서 DAO의 개념은 리포지토리가 대체하고 있습니다. 규모가 작은 서비스에서는 DAO를 별도로 설계하지 않고 바로 서비스 레이어에서 데이터베이스에 접근해서 구현하기도 하지만, 이번 장에서는 DAO를 서비스 레이어와 리포지토리의 중간 계층을 구성하는 역할로 사용할 예정입니다. 이 포스팅에서는 간단한 데이터베이스 호출만 다루고 있기 때문에 큰 의미는 없지만 실제로 업무에 필요한 비즈니스 로직을 개발하다 보면 데이터를 다루는 중간계층을 두는것이 유지보수측면에서 용이한 경우가 많습니다. 물론..
백트래킹(Backtracking)백트래킹은 모든 가능한 경우의 수를 탐색하면서, 조건에 맞지 않는 경로는 탐색을 중단하고 이전 단계로 돌아가는 기법입니다. 재귀 호출을 통해 동적으로 탐색 깊이를 조절할 수 있다는 점이 가장 큰 특징입니다.DFS기반백트래킹의 핵심 요소1. 완전탐색가능한 모든 선택지를 시도하며, 최적의 해를 찾거나 특정 조건을 만족하는 해를 구합니다.예를 들어, 미로 탐색에서는 모든 경로를 탐색해 최단 경로를 찾습니다. 2. Pruning(가지치기)조건을 만족하지 않는 경로는 더 이상 탐색하지 않고 조기에 종료합니다.이를 통해 탐색 시간을 줄이고 효율성을 높입니다. 3. 동적 깊이 조절백트래킹은 재귀 호출을 사용하기 때문에 탐색 깊이를 문제 상황에 따라 동적으로 변경할 수 있습니다.이는 깊..
리포지토리 인터페이스 설계Spring Data JPA는 JpaRepository를 기반으로 더욱 쉽게 데이터베이스를 사용할 수 있는 아키텍처를 제공합니다. 스프링 부트로 JpaRepository를 상속하는 인터페이스를 생성하면 기존의 다양한 메서드를 손쉽게 활용할 수 있습니다. 리포지토리 인터페이스 생성여기서 이야기하는 리포지토리(Repository)는 Spring Data JPA가 제공하는 인터페이스입니다. 엔티티를 데이터베이스의 테이블과 구조를 생성하는 데 사용했다면, 리포지토리는 엔티티가 생성한 데이터베이스에 접근하는 데 사용됩니다. 리포지토리를 생성하기 위해서는 접근하려는 테이블과 매핑되는 엔티티에 대한 인터페이스를 생성하고, 아래 예제와 같이 JpaRepository를 상속받으면 됩니다.publ..