전체 글(73)
-
반정규화 정리
앞서 정규화에 대해서 글을 작성해봤다. 그렇다면 이러한 의문점이 든다. 정규화는 무조건 장점만 존재할까? 정규화는 릴레이션의 분리로 인해 조인이 많아져 질의에 대한 응답 시간이 느려지게 된다는 단점이 있다. 이러한 문제점을 해결할 수 있는 것이 반정규화다. 그렇다면 어떠한 경우에 반정규화를 해주면 좋을까? 반정규화를 수행하면 좋은 경우 1. 정규화를 통해 수행속도가 느려진 경우 2. 특정 범위의 데이터를 자주 조회하는 경우 3. 요약 / 집계 정보가 자주 요구되는 경우 그렇다면 반정규화 하는 방법은 어떤 것이 있을까? 1. 테이블 병합 조인되는 경우가 많아서 테이블을 합치는 것이 성능향상에 효율적인 경우에 사용 2. 테이블 분할 테이블에서 특정 속성들만 집중적으로 접근할 경우 분할하여 사용 1) 수직분할..
2023.01.10 -
데이터 무결성
데이터 무결성이란? 데이터 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미한다. 데이터베이스의 상태를 일관되게 유지하는 것이 목적이다. 무결성 제약 조건의 종류 1. 개체 무결성 모든 테이블은 기본키를 가져야 한다. 기본키를 구성하는 속성은 not null과 unique해야 한다. 2. 참조 무결성 참조 관계 있는 두 테이블 A, B가 있을 때 A의 기본키를 외래키로 B가 가지고 있다고 할 때 A의 기본키와 B의 외래키가 동일해야한다. 3. 도메인 무결성 테이블에 존재하는 컬럼들의 데이터 타입을 맞추어준다. 4. null 무결성 테이블의 속성 값이 null이 될 수 없도록 제한한다.
2023.01.10 -
정규화 정리
정규화란? 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스라고 정의되어 있다. 정규화를 사용하는 목적 데이터베이스의 변경시 이상 현상 제거 1) 갱신 이상 : 만약 A.Bruchs의 부서를 변경할 때 4번째 행만 변경한다면 4번째 행과 5번째의 행의 부서가 달라지게 되므로 A.Bruchs의 부서가 어디에 속하는지 알 수 없다. 2) 삽입 이상 : 새로운 부서가 생겼을 때 아직 근무자 없다고 가정했을 때, 이 부서에 관련한 정보는 불필요한 정보를 함께 입력해야만 입력할 수 있다. 3) 삭제 이상 : Accounting 부서에 속한 사람이 한 명이라면 1행을 삭제하면 Accounting 부서에 대한 정보도 사라지게 된다. 제1 정규화 제1 정규화란 테이블의 칼럼이 원자값을 갖도록..
2023.01.10 -
jpa 영속성 정리
영속성 컨테스트란? 엔티티를 영구 저장하라는 뜻이다. jpa는 웹 어플리케이션에 요청이 오면 EntityManagerFactory에서 EntityManager를 생성을 한 후 커넥션풀을 활용해 db에 접근하여 데이터를 저장하게 되는 과정이 일어난다. 엔티티의 생명주기 1. 비영속 Member member = new Member(); member.setId(100L); member.setName("Hello"); 객체를 생성만 했을 경우에는 영속 컨텍스트 밖에 위치한다. 이러한 경우를 비영속 상태라고 한다. 2. 영속 Member member = new Member(); member.setId(100L); member.setName("Hello"); em.persist(member); em.persist를..
2023.01.08 -
spring annotation 정리3 @Entity
안녕하세요. spring으로 프로젝트를 진행하면서 백엔드 개발자를 준비하고 있는 학생입니다. 공부를 하면서 어노테이션의 역할을 잘 모르고 사용하는 경우가 많아서 제가 이해가 편하도록 정리를 해보려고 합니다. 글을 읽고 나서 잘못된 점이나 부족한 점 댓글로 알려주시면 감사하겠습니다. @Entity 클래스 위에 선언하여 JPA에서 정의된 필드들을 바탕으로 데이터베이스에 테이블을 만들어준다. @Builder 해당 클래스에 해당하는 엔티티 객체를 만들 때 빌더 패턴을 이용할 수 있도록 해준다. @AllArgsConstructor선언된 모든 필드를 파라미터로 갖는 생성자를 자동으로 만들어준다. @NoArgsConstructor 기본생성자를 자동으로 만들어준다. @Getter 각 필드값을 조회할 수 있는 gette..
2023.01.08 -
spring annotation 정리2 @Service
안녕하세요. spring으로 프로젝트를 진행하면서 백엔드 개발자를 준비하고 있는 학생입니다. 공부를 하면서 어노테이션의 역할을 잘 모르고 사용하는 경우가 많아서 제가 이해가 편하도록 정리를 해보려고 합니다. 글을 읽고 나서 잘못된 점이나 부족한 점 댓글로 알려주시면 감사하겠습니다. service란? controller로 부터 응답을 받은 비즈니스 로직을 처리한 후 repository로 넘겨주는 역할을 한다. 의존성 주입하는 방법 생성자 주입을 통해 의존성을 주입하는 방법을 권장하는데 그중 @RequiredArgsConstructor를 사용하는 방법이 좋습니다. @RequiredArgsConstructor @Service public class ItemsService { private final Items..
2023.01.08