전체 글64 관계형 데이터베이스 참조 무결성 제약 조건과 Cascade 옵션의 동작 원리 조금 옛날 이야기(90년대 말~2000년대 초반)이지만, Primary Key와 Unique Index 관련하여 다음과 같은 논쟁이 있었다고 한다. "Primary Key 대신에 Unique Index만을 사용해서 데이터 모델링을 하면 개발자 입장에서 더욱 편리한 데이터베이스 설계를 할 수 있습니다." 물론 당연히 PK를 적절하게 사용하여 데이터 모델링을 하는 것이 정석으로 여겨지고 있는 요즘에는 이런 말을 하는 개발자는 없을 것이다. 왜냐하면 Unique Index만을 사용하는 것보다 PK를 적절하게 이용하는 것이 많은 측면에서 유리하다는 것이 수많은 경험으로 이미 검증되었기 때문이다. 딱 하나의 유리함을 꼽자면, Unique Index만을 사용하였을 때에는 참조 무결성 제약조건이 자동 설정되지 않아 .. 2024. 4. 9. 실무에서 반환 값이 null일 가능성이 있을 때 Optional로 안전하게 반환하는 방법 공부하게 된 배경 웹 애플리케이션(Web Application)에서는 여러 역할을 맡는 기능이 필요하며, 이 기능들을 메서드 형태로 정의한 후 각각 관련이 있는 기능끼리 하나의 클래스(계층)로 묶어서 관리를 합니다. 하나의 웹 애플리케이션은 개념적으로 다양한 계층으로 나눠질 수 있겠지만, 주로 [프레젠테이션 계층 - 서비스 계층 - 리포지토리 계층]으로 구성이 되는데, 여기서 리포지토리(Repository) 계층은 서비스(Service) 계층으로부터 어떠한 요청을 받아, 데이터베이스와 직접적으로 커뮤니케이션을 하는 여러 기능들을 정의하는 곳입니다. 데이터베이스와 직접적으로 커뮤니케이션하는 리포지토리 계층 로직을 작성할 때 Spring Data JPA라는 프레임워크를 이용하였는데, 다음과 같이 JPARep.. 2024. 4. 3. Lowest Common Ancestor of a Binary Tree 최소 공통 조상 알고리즘 [LeetCode 236] 최소 공통 조상 이진 트리(Binary Tree)에서 최소 공통 조상(Lowest Common Ancestor)이란, 서로 다른 두 노드의 조상 노드 집합을 각각 A와 B라고 할 때, 교집합(A n B)에 속하는 원소 중 가장 하위에 존재하는 노드를 의미합니다. 여기서 조상 노드 집합이라는 개념은, 본 노드를 포함하는 개념임을 주의해야 합니다. 예를 들어서 A 노드의 조상 노드 집합에는, A노드보다 상위에 직 / 간접적으로 연결되어 있는 노드 뿐 아니라, A 노드도 포함이 됩니다. 위 이진 트리(Binary Tree)에서 A노드와 B노드의 최소 공통 조상을 찾아보겠습니다. A와 B의 공통 조상은 핑크색으로 표시해 두었습니다. 이 핑크색으로 표시된 노드 중 가장 하위에 존재하는 노드인 5가 바로 A와 B의.. 2024. 4. 1. [LeetCode 584] Find Customer Referee (feat. MySQL에서 사용하는 3논리 값) 오늘은 쉽지만, 흔히 실수가 발생하고 오해가 일어나기 좋은 문제를 풀어보도록 합니다. 문제 링크 : https://leetcode.com/problems/find-customer-referee/description/?envType=study-plan-v2&envId=top-sql-50 다음과 같이, Customer라는 테이블이 데이터베이스에 저장이 되어 있습니다. 그리고 각 컬럼의 정보는 다음과 같습니다. 여기서 우리의 목표는, 저 referee_id값이 2가 아닌 모든 고객의 이름(name)을 추출하는 것입니다. 그래서 다음과 같은 결과가 나와야 합니다. 이 때 어떻게 SQL을 작성하면 좋을까요? SQL이 아닌 프로그래밍 언어에 익숙하신 분들이라면 다음과 같이 생각하시는 분이 많습니다. 흔히 할 수 있.. 2024. 3. 5. 이전 1 2 3 4 5 6 7 ··· 16 다음