묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
2NF의 엄밀한 정의
2NF를 충족하기 위한 조건은 다음과 같은 것으로 알고 있습니다.제1 정규형을 만족하고,모든 컬럼이 후보 키 전체에 완전 함수 종속되어야 한다. 예를 들어 수강 테이블의 컬럼이 다음과 같다고 할 때,id: PK [대리 키]student_id: UK1 [자연 키]course_id: UK1 [자연 키]student_name [일반 컬럼]후보 키:id [기본 키 - 단일 후보 키](student_id, course_id) [대체 키 - 복합 후보 키] (student_id, course_id)는 복합 후보 키이고,student_id -> student_name (부분 함수 종속)이므로 2NF에 위배되지 않나요?따라서 대리 키만 써도 2NF에 위배되는 일이 발생할 수 있다고 생각합니다. 아니면, 실무에서는 2NF의 정의를 기본 키에만 한정하여 2NF를 만족하는 것으로 보나요?
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
공통 코드에서 Redis Pub/Sub은 최근 실무에서 쓰이진 않나요?
Redis Pub/Sub 구독을 통해 Redis 갱신 시 Sub로 구독 중인 각 서버에 캐시 무효화 및 강제 갱신 시키는 구조는 잘 안쓰이나요?이 방법도 네트워크 순단 시 fire and forget, 구현 복잡도가 높음 등의 문제가 있긴한데 실무에서는 Pub/Sub을 잘 안쓰는지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.
6강까지 강의를 들으면서 서버가 켜지고 POSTMAN으로 동작하는걸 확인했었는데 다음날부터 서버가 실행이 안되더라고요. 그래서 gpt한테 물어보니 resources 파일 안에 application.yml 폴더를 만들고 그 안에 spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 이걸 쳐서 넣으니까 되더라고요. 오류는 2026-03-13 15:22:27.732 ERROR 7960 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : APPLICATION FAILED TO START Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active). 종료 코드 1(으)로 완료된 프로세스이렇게 떴습니다. 제가 뭐 건드린게 없었는데 다음날 서버가 안켜지기도 하나요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
33강. UserLoanHistory의 관계성에 대한 질문
안녕하세요 선생님.강의를 듣던 중 궁금한 점이 생겨서 이렇게 글을 남기게되었습니다.UserLoanHistory라는 Entitiy는 강의에서 말씀하셨듯이 User와 ManyToOne의 관계를 가져가는데,이게 또 Book과의 관계를 보더라도 ManyToOne이 성립할수 있지 않나 싶습니다.(물론 UserLoanHistory의 변수로 pk인 bookId가 아닌 bookName을 쓰셔서 조금 다를수 있지만...) 따라서 user_loan_history 테이블을 설계할때 칼럼을 book_name이 아닌 book_id로 해서 만든다면 그게 좋은 선택일지 궁금합니다만일 1번의 테이블 설계가 나쁘지 않은 방식이라면 UserLoanHistory Entity에 Book에 대해서도 ManyToOne을 무조건 해주는게 좋은지,아니면 '유저'의 대출기록만 자주 쓰이고'책'의 대출기록은 거의 조회되지않을거 같으면 굳이 ManyToOne을 해줄 필요가 없을지 궁금합니다.
-
미해결따라하며 배우는 MySQL on Docker
pdf 압축파일 제공
강의자료 하나씩 받는게 힘드네요. 압축파일로 한번에 받을수 있는 방법 있을까요?
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
DELETE -> SELECT 질문 드립니다.
안녕하세요 단건데이터(ex: 로그) 처리의 경우에는 크게 고민하지 않고 MERGE를 사용하여 처리하고 있습니다. 하지만 10~20건 이상의 데이터셋이 들어오는 경우에는 어떤 방식으로 처리하는 것이 더 적절한지 고민이 되어 질문드립니다. 데이터 DELETE -> INSERT 2번의 쿼리 수행(또는 BEGIN으로 1번에 수행) 데이터 STATE (I, U, D 등)를 활용하는 방식 화면에서 데이터에 INSERT / UPDATE / DELETE 상태값을 기반으로 서버에서 DELETE 1회, INSERT 1회, UPDATE N회를 수행실무에서는 작업 공수 문제로 1번 방식(DELETE -> INSERT)을 선택하는 경우가 많았습니다. 다만 이 방법을 사용하면서 DELETE로 인해 발생하는 DB 블록 낭비기존 데이터의 CREATE_DATE가 유지되지 않아 UPDATE_DATE와 의미 차이가 사라지는 문제데이터 관리, 유지보수, 성능 측면에서 어떤 방식이 더 바람직한 선택인지 궁금합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
상속 관계 모델링의 적용 기준 질문
안녕하세요 영한님!"8. 상속 관계 설계" 강의에서, 상품 테이블을 예시로 들어, 슈퍼타입-서브타입 모델링을 설명해주셨는데요! 만약에 서브타입이 다른 테이블과 관계를 맺게 된다면, 이 케이스에도 슈퍼타입-서브타입 모델링을 적용하는게 괜찮을지 궁금하여 질문을 드립니다! 예를 들어, 신고 내역을 저장하는 테이블을 모델링하는 상황에서, 회원 신고/게시글 신고/댓글 신고/그룹 신고 이렇게 나뉜다면 슈퍼타입-서브타입 상속 전략을 사용해도 괜찮은지 궁금합니다.
-
해결됨Spring Batch 입문: 3시간 만에 끝내는 대용량 처리의 기초
jobParameter를 통한 멱등성 질문
안녕하세요 우선 좋은 강의 감사드립니다. 덕분에 Batch에 대한 기본적인 틀을 잡을 수 있을 것 같아요! 중급강의도 기대됩니다.실습을 따라가던 와중, 멱등성을 유지하기 위해서 궁금한점이 생겨서 질문드립니다.같은 파라미터로 완료된 job은 재실행을 허용하지 않기 때문에 parameter로 time을 넣어주셨는데요.그렇게 되면 만약에 job을 실패지점부터 재실행 하고 싶은 경우에는 targetDate 뿐만 아니라 실패한 시간대에 time 파라미터까지 넣어서 재시작을 해야하는 것인가요?만약에 time 파라미터를 추가한 상태에서, 이전 실행과 다른 time 파라미터로 완료된 job을 재실행 할경우에는 정산 테이블에서 targetDate에 해당하는 값을 DELETE를 하고 INSERT를 진행해야 멱등성이 유지될 것 같습니다. 이럴 경우 DELETE 같은 경우는 Settlement INSERT 작업 이전에 별도의 Step으로 구성이 되야할까요?만약에 DELETE를 해야한다면 DELETE의 경우에는 targetDate의 해당 하는 값을 한번에 전부 지우고 INSERT를 시작하는지 궁급합니다..!
-
해결됨데이터 분석을 위한 SQL 문제풀이 (Advent of SQL 2024)
평균값 구하기
안녕하세요. 장르별 평균 값을 구할 때, 데이터가 null 인 부분은 모두 0으로 처리해서 계산해야 하지 않나요?
-
미해결김영한의 실전 데이터베이스 - 기본편
ON을 명시하지 않았을 경우 질문드립니다.
문제 3번을 풀다가select * from orders o inner join users as u on o.user_id=u.user_id inner join products as p;이러한 쿼리를 작성하게 되었습니다.실행 결과로 오류 없이 테이블이 나왔습니다.그래서 이걸 바탕으로 문제를 풀었다가 결과가 답안과 달라 문제점을 찾다가 on o.product_id=p.product_id 을 작성하지 않은 잘못된 쿼리라는 것 알았습니다.여기서 질문이 있습니다.inner join이 공통된 부분을 join하는 것이라고 하셨는데,orders와 users를 조인 후 products를 조인 할 때 제가 작성한 쿼리의 경우 연결 조건인 ON을 지정하지 않았는데 어떻게 join하여 결과 테이블이 나올 수 있는 것인가요?
-
미해결Spring Boot와 React로 배우는 초간단 REST API 게시판 만들기
지금 이게 맞는건지 문의드립니다.
배워보려고 결제하고 듣는중입니다. create-react-app 부터 적용되지가 않네요 Deprecate되었다고 나오고 React-Router에서 각페이지 분기시부터 에러가 발생하네요 각페이지 마다 수업에 따라가려면 버전을 낮춰야 하는건가요?
-
해결됨Spring Batch 입문: 3시간 만에 끝내는 대용량 처리의 기초
bootRun FAILED 에 대한 문의
강사님 안녕하세요~! 배치 실패시 서버 담당자에게 메일 보여주기 수업 잘들었습니다! 마지막에 실패시 리스너 동작을 테스트 하시기 위해서 예외를 던지신듯 합니다. 그런데 실습 결과가 강사님과 다르게 bootRun FAILED라고 나와서요. (> Task :bootRun FAILEDFAILURE: Build failed with an exception.) 사소한 것 같기는 한데 이유가 궁금해서 글남깁니다~ 좋은 하루되세요~~!
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
TTL 캐싱에 대한 질문
안녕하세요! 강의를 듣다보니 TTL 캐싱을 사용할 때에도 오류가능성이 존재하지 않나 싶어 질문 남깁니다. TTL을 1분이라 가정했을 때 TTL이 지나기 전에 DB의 값이 바뀌고, 그 이후 TTL이 지나기 전에 캐싱된 값을 사용하게 된다면 DB에 있는 값과 캐싱되어있는 값에는 차이가 존재하지 않나요? 이에 대해선 어떻게 구현되어있는지 궁금합니다
-
해결됨Spring Boot, AWS로 백엔드 서비스 한 사이클 완성하기
application.yaml에서 enabled: true 인식 안됨
Spring Data JPA 다루기 영상 5:47까지 따라하는 와중에 enabled: true에서 enabled에 노란 밑줄이 그이고 true가 제대로 인식되지 않습니다. 무슨 문제인지 도저히 모르겠습니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
강의 2:53 union을썼는데도 션이 중복
[질문 내용]강의 UNION 정렬 2:53초부근에UNION을 사용해서 결과를 불러오는데 션이 중복으로 표출됩니다. UNION은 중복을 제거하지 않나요?created_at 에 데이터가 다르기때문에 모두 표출된건지 궁금합니다!
-
미해결실전! 데이터베이스 완전정복 [설계편]
커버링 인덱스에 대해서 질문드립니다.
안녕하세요. 강의 정말 잘 듣고 있습니다. 강의를 듣다가 커버링 인덱스(Covering Index) 관련해서 궁금한 점이 생겨 질문드립니다.커버링 인덱스는 SELECT 문에서 조회하는 컬럼들이 모두 인덱스에 포함되어 있을 때, 원본 테이블을 조회하지 않고 인덱스만으로 쿼리를 처리할 수 있는 방식이라고 이해했습니다.그렇다면,SELECT에 포함된 컬럼들이 각각 단일 인덱스로 존재하는 경우에도 커버링 인덱스로 처리될 수 있는지 궁금합니다.아니면 반드시 하나의 복합 인덱스(composite index) 로 묶여 있어야 커버링 인덱스로 동작하는 것인지 알고 싶습니다.예를 들어,id는 Primary Key라서 자동으로 인덱스가 생성되어 있고name 컬럼에 대해서도 검색을 위해 인덱스를 추가하려고 할 때다음 두 방식 중 어떤 것이 더 적절한지 궁금합니다.name 컬럼에 단일 인덱스를 생성(id, name) 형태의 복합 인덱스를 생성이 경우 커버링 인덱스 관점에서 어떤 방식이 더 올바른 설계인지 설명해주시면 감사하겠습니다 :>
-
해결됨Spring Batch 입문: 3시간 만에 끝내는 대용량 처리의 기초
[참고] Tasklet 인터페이스로 단일 배치 작업 처리 수업에 나온 코드 돌리는 방법
package com.system.batch.sy_batch_system.ch03; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.PlatformTransactionManager; @Configuration @RequiredArgsConstructor public class CafeJobConfig2 { private final JobRepository jobRepository; private final PlatformTransactionManager transactionManager; @Bean public Job cafeJob2() { return new JobBuilder("cafeJob2", jobRepository) .start(cafeStep2()) .build(); } @Bean public Step cafeStep2() { return new StepBuilder("cafeStep2", jobRepository) .tasklet(cafeJobTasklet2(), transactionManager) .build(); } @Bean public CafeJobTasklet cafeJobTasklet2() { return new CafeJobTasklet(); } }ch03 에 위에 코드 작성하시고 powerShell(윈도우일 때).\gradlew bootRun --args="--spring.batch.job.name=cafeJob2" 로 실행하시면 됩니다감사합니다
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
공통 코드 사용시 컬럼 타입 설정
안녕하세요.공통 코드를 가져와 사용하는 테이블 스키마를 정의할 때 궁금한 점이 있습니다.영상 11분 05초를 보면 주문 테이블과 결제 테이블을 정의합니다.이때 , order_status, payment_method, payment_status와 같은 컬럼을 varchar로 정의하셨습니다.type-safe하게 정의한다면, 해당 컬럼들을 enum으로 정의하거나 공통 코드 상세 테이블과 relation을 설정해서 외래키를 사용할 거 같은데,이와 같은 방식은 유지보수를 더 어렵게 만드는 구조인걸까요?type-safe하게 만들고 싶다면 애플리케이션 레벨(서버측 코드)에서 정의해주는게 좋은 방법인걸까요?----------------------참고로 저는 nodejs 기반의 백엔드 개발자이며,김영한님의 강의는 네트워크+DB만 수강하고 있습니다.(java+springboot+jpa 등의 지식과 경험은 전무합니다.)
-
미해결6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
외부 api 처리 방안에 대하여 궁금한 점이 있습니다.
수업 예시에서는 외부 api가 실패할 경우 스케쥴러를 활용해서 후보정 로직을 통하여 결과적 일관성을 맞추고 있습니다. 만약에 자리를 지정하는 콘서트를 위와 같이 처리할 경우 (예약은 성공, 외부 api는 실패), 후보정 로직이 동작하기 전 다른 예약 시스템에서 해당 자리를 예약한 경우 더욱 큰 문제가 발생할 수 있을 것으로 보입니다. 이러한 경우 (좌석처럼 한정된 자원을 예약하는 경우), 외부 API 실패 시 후보정 로직을 통한 비동기 처리 대신 동기적으로 처리하는 것이 올바른 방식인 것 같은데, 강사님은 어떻게 생각하시는지 궁금합니다!
-
미해결비전공자도 이해할 수 있는 DB 설계 입문/실전
규칙 1에 대해서
규칙 1에 대해서 생각이 나서 드는 의문인데요누가 좋아요를 눌렀는지 그 컬럼이 지금 여러개의 원소가 들어가있으니까 그 컬럼만 빼서 다른 테이블에 다 만들어야하는거아닌가요? 어짜피 게시글 id는 1,2로 딱 하나하나씩 들어가 있으니까...왜 이 중복을 밑으로 나열하는지 모르겠어여