일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 리눅스
- compgen
- JPA
- 커밋 되돌리기
- 편향된 지수
- 데커
- 영속화
- application layer
- 파이썬
- 알고리즘
- 프로그래머스
- 무한정 대기
- 은행원알고리즘
- spring
- DTO
- intelij spring config
- 백준
- Git
- API
- @SubscribeMapping
- 기본키 전략
- BindingResult
- allocationSize
- 런타임 상수
- JDBC
- m:n
- @Autowired
- 쿠키
- 쉘 스크립트
- 컴파일 타임 상수
- Today
- Total
목록데이터베이스 (11)
둘셋 개발!
DB를 설계 할 때 '정규화'과정을 거친다고 말한다. 정규화는 무엇이고, 왜 해야 할까?? ✔️ 정규화란? : 이상현상이 있는 테이블을 분해햐여 이상현상을 없애는 과정 여기서 이상현상이란 불필요한 데이터 중복으로 인해 테이블에 대한 데이터 삽입, 수정, 삭제 연산을 할 때 발생할 수 있는 부작용이다. 따라서 정규화를 하는 이유는 중복을 허용하지 않기 위해!! 라고 정리할 수 있겠다. ✔️ 정규화 과정 정규화는 과정에는 여러 단계가 존재하지만 이번 포스팅에서는 대표적으로 1정규화, 2정규화, 3정규화, BC정규화, 역정규화를 다룰 것이다. - 1정규화 : 데이터가 원자성을 가질 수 있게 함. (원자성: 더이상 쪼개질 수 없는 성질) 원자성을 해칠 수 있는 것들 중에 대표적으로 다가속성, 복합속성이 있다. ..
✔️ 1:1 관계 한 개 레코드는 반대편 테이블의 한 개의 레코드과 연결되어 있는 관계를 말한다. 실생활 예시로 든다면 부부관계가 1:1 관계이다. 한 명의 신부는 여러명의 신랑과 부부관계를 맺을 수 없고, 한 명의 신랑은 여러명의 신부와 부부관계를 맺을 수 없다. ✔️ 예시 테이블을 만들어 본다면 다음과 같을 수 있다. 1:1 매핑이 잘 되었다. 하지만 문제점이 있다. ❗️ 문제점 1. delete가 불가능 만약 김신랑의 데이터를 삭제하려고 하면 신부 테이블의 신랑ID는 참조하고 있던 데이터가 사라지므로 부모없는 자식이 발생하게 된다. 2. join시 문제발생 다음과 같이 Pk가 여러개가 되어 버린다. (1번째, 3번째) 컬럼이 pk이고, (4번째, 6번째) 컬럼이 pk이다. 개선된 테이블 신랑 테이블..
DB를 설계할 때 M:n의 관계를 찾는 방법은 1번 1:m 관계인지 확인 -> 1:m 관계가 아니라면 2번으로 2번 비지니스 관계인지 확인 -> 그렇다면 m:n관계!!! 예를 들어 도서관의 DB를 만든 다고 생각해보자. 그리고 회원은 도서를 대출할 수 있다. 그렇다면 여기서 어떤 테이블을 설계 해야할까? 일단 회원 테이블과 도서 테이블을 설계할 것이다. 회원 테이블의 도서 테이블은 어떤 관계를 맺어야 할지 고민해야한다. 1번 1:m의 관계인가? 아니다. 2번 비지니스 로직이 있는가? 회원이 도서를 '대출' 한다는 비지니스 로직이 있다. 따라서 대출이라는 관계테이블을 생성해서 m:n 관계를 완성하면 된다.
우선 m:n 테이블이 무엇인지 알아보자. M:N 관계 : 양 쪽 모두 1:M 관계가 성립 예를 들어 학생테이블과 과목 테이블이 있다고 하자. 학생 테이블 입장에서 과목 테이블을 바라봤을 때 한 학생은 여러 개의 과목을 수강할 수 있다. 반대로 과목 테이블에서 학생 테이블을 바라봤을 때 한 과목은 여러 명의 학생이 수강할 수 있다. 그림으로 살펴보자 먼저 학생 테이블, 과목 테이블이 있다고 치자. 일단 관계를 맺기 전인 서로 독립적인 테이블이다. 여기서 학생 테이블과 과목 테이블 간의 관계를 맺어보고자 한다. 그러면 학생 테이블에 과목 id를 가진 fk 컬럼을 추가하고, 과목 테이블에는 학생 id를 가진 fk 컬럼을 추가해본다. (✢ 주의 이렇게 하면 안됨!!!!) 이렇게 만들 수는 있다. 하지만 이것은 ..