본문 바로가기

Database6

GraphQL 연관관계 객체 쿼리 시 발생하는 Lazy Loading 문제 파이썬 FastAPI와 SQLAlchemy를 이용하여다음과 같이, 직원들의 직무(Job) 정보를 변경하고, 그 변경된 정보를 가져오는 쿼리를 작성하였다. class UpdateJob(Mutation): class Arguments: job_id = Int(required=True) title = String() description = String() employer_id = Int() job = Field(lambda: JobObject) @staticmethod def mutate(root, info, job_id, title=None, description=None, employer_id=None): session .. 2024. 11. 1.
[LeetCode 608] 트리 노드의 타입 판별 URL : https://leetcode.com/problems/tree-node/description/ SQL 쿼리 관련 문제를 풀다가 재밌게 풀었던 문제가 있어 공유하고자 합니다. 트리의 노드를 분류하는 수많은 방법들이 있지만, 여기서는 다음과 같은 분류법을 논하고 있습니다. "해당 노드가 Root노드 인가, Leaf 노드 인가, 아니면 Inner 노드인가" 노드가 루트노드이려면 어떠한 특징을 가져야 하고, 잎사귀 노드이려면 어떠한 특징을 가져야 하고, 내부 노드이려면 어떠한 특징을 가져야 하는 지 생각해보고 정리할 수 있는 좋은 기회였습니다. 데이터가 다음과 같이 주어질 때에, 각 노드가 "Root", "Inner", "Leaf" 중에 어떠한 유형에 속하는 지 분류하는 문제입니다. 즉, input이.. 2024. 4. 23.
관계형 데이터베이스 참조 무결성 제약 조건과 Cascade 옵션의 동작 원리 조금 옛날 이야기(90년대 말~2000년대 초반)이지만, Primary Key와 Unique Index 관련하여 다음과 같은 논쟁이 있었다고 한다. "Primary Key 대신에 Unique Index만을 사용해서 데이터 모델링을 하면 개발자 입장에서 더욱 편리한 데이터베이스 설계를 할 수 있습니다." 물론 당연히 PK를 적절하게 사용하여 데이터 모델링을 하는 것이 정석으로 여겨지고 있는 요즘에는 이런 말을 하는 개발자는 없을 것이다. 왜냐하면 Unique Index만을 사용하는 것보다 PK를 적절하게 이용하는 것이 많은 측면에서 유리하다는 것이 수많은 경험으로 이미 검증되었기 때문이다. 딱 하나의 유리함을 꼽자면, Unique Index만을 사용하였을 때에는 참조 무결성 제약조건이 자동 설정되지 않아 .. 2024. 4. 9.
[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.