Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

엘라의 개발 스케치 Note

[TIL] 내일배움캠프 96일차(23.08.18.) - 정규식을 포함에서 조합으로 변경, RDBMS 정규화 본문

내일배움캠프/TIL

[TIL] 내일배움캠프 96일차(23.08.18.) - 정규식을 포함에서 조합으로 변경, RDBMS 정규화

엘라랑이 2023. 8. 18. 21:59

To-do

  • 최종 프로젝트 회의 -> S.A 수정
  • 최종 프로젝트 작성 -> init PR 확인, Festival-Review-Comment 기본 CRUD 작성, User 기능 오류 코드 수정, 파트 나누기
  • 기술면접 대비 공부
  • 알고리즘 스터디

 


TIL

< 회원가입 시 비밀번호 정규식 수정 >

  • 기존 정규식(포함): "^[A-Za-z0-9~`!@#$%\\^&()-]$"
* 첫 번째 정규식 (원래 정규식)은 다음과 같은 문자, 숫자 및 특수 문자만 포함하는지 검증합니다
- 영문 대문자 (A-Z)
- 영문 소문자 (a-z)
- 숫자 (0-9)
- 특수 문자: ~`!@#$%^&*()-

 

  • 수정 정규식(조합): "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[~!@#$%^&*()+|=])[A-Za-z\\d~!@#$%^&*()+|=]*$"
* 두 번째 정규식 (수정된 정규식)은 다음과 같은 규칙을 따르는 문자열을 검증합니다
- 최소한 하나의 영문자 (A-Za-z)를 포함해야 합니다. ((?=.*[A-Za-z]))
- 최소한 하나의 숫자 (0-9)를 포함해야 합니다. ((?=.*\\d))
- 최소한 하나의 특수 문자 (~!@#$%^&*()+|=)를 포함해야 합니다. ((?=.*[~!@#$%^&*()+|=]))
- 그리고 영문 대문자, 영문 소문자, 숫자, 특수 문자 중에서만 포함하여 구성되어야 합니다. ([A-Za-z\\d~!@#$%^&*()+|=]*)
<기존 코드 - 대소문자, 숫자, 특수문자 허용>
    // @NotBlank
    // @Size(min = 8, max = 15, message = "최소 8글자에서 최대 15글자까지 입력 가능합니다.")
    // @Pattern(regexp = "^[A-Za-z0-9~`!@#$%\\\\^&*()-]*$", message = "소문자, 대문자, 숫자, 특수문자 조합의 비밀번호만 입력 가능합니다.")
    // private String password;
    
<수정 코드 - 대소문자, 숫자, 특수문자 조합으로 수정>
        @NotBlank
        @Size(min = 8, max = 15, message = "최소 8글자에서 최대 15글자까지 입력 가능합니다.")
        @Pattern(regexp = "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[~!@#$%^&*()+|=])[A-Za-z\\d~!@#$%^&*()+|=]*$", message = "소문자, 대문자, 숫자, 특수문자 조합의 비밀번호만 입력 가능합니다.")
        private String password;

 

< RDBMS 정규화 >

  • 정규화(Normalization)는 관계형 데이터베이스에서 데이터 중복을 최소화하고 데이터 일관성과 무결성을 유지하기 위해 데이터를 구조화하는 프로세스입니다. 정규화를 통해 데이터베이스의 성능과 유지보수성을 향상시킬 수 있습니다. 주로 이론적으로 데이터의 중복성과 종속성을 최소화하여 데이터를 작은 테이블로 분할하는 과정을 거칩니다.
  • 정규화는 여러 단계(정규형)로 나누어 진행되며, 각 단계는 더 높은 정규형을 나타냅니다:
* 1차 정규형 (1NF): 각 열은 원자값(더 분해할 수 없는 값)만 가지며, 중복된 데이터가 없어야 합니다.
* 2차 정규형 (2NF): 부분적 종속성을 제거하기 위해 모든 비주요 속성이 주요 속성에 완전히 종속되어야 합니다.
* 3차 정규형 (3NF): 이행적 종속성을 제거하기 위해 모든 비주요 속성이 주요 속성에 비종속되거나, 후보 키에만 종속되어야 합니다.

 

  • 또한 더 높은 정규형인 보이스-코드 정규형(BCNF)이나 4차, 5차 정규형 등이 있지만, 실제 데이터베이스 설계에서는 일반적으로 3차 정규형까지 고려됩니다.
  • 정규화의 장점
- 데이터 중복 최소화로 데이터 일관성 및 무결성 유지
- 쿼리 성능 향상
- 데이터 수정 시 각 테이블에서 변경 사항이 발생하므로 유지보수성 향상

 

  • 정규화의 단점
- 조인 연산이 증가하여 쿼리 성능이 저하될 수 있음
- 복잡한 스키마 구조로 인해 일부 쿼리 작성이 어려울 수 있음

 

  • 정규화는 데이터베이스 설계 시 중요한 고려 사항이며, 데이터의 특성과 요구사항을 고려하여 적절한 정규화 수준을 선택해야 합니다.

 

RDBMS의 정규화는 데이터 중복을 최소화하고 일관성을 유지하기 위한 프로세스로, 테이블을 작게 분할하여 데이터를 구조화합니다. 1차, 2차, 3차 정규형 등 다양한 단계가 있으며, 주로 비정규형 데이터를 원자값으로 분해하고 종속성을 조정하여 설계합니다. 정규화는 데이터 일관성과 무결성을 향상시키지만 쿼리 성능 저하와 복잡한 스키마 구조의 단점도 고려해야 합니다.

 


Next...

  • 최종 프로젝트 회의 및 작성
  • CS 공부
  • 기술면접 대비 공부
  • JPA 강의 듣기
  • 알고리즘 문제 풀기
  • 뚜까패 스터디 발표 자료 정리
Comments