안녕하세요. 질문이 있습니다!! 제2정규화는 제 1 정규형을 만족하고, 테이블의 기본키가 복합키일 때 부분 함수 종속이 있으면 적용할 수 있잖아요 근데 이전 강의 영상에서 말씀하셨듯이 유연하고 확장성 있는 설계를 하기 위해 자연키가 아닌 대리키를 사용하고, 연관 엔티티(매핑 테이블)을 두어 사용하려면 비즈니스 로직에 따라 유니크 제약조건을 걸어 해결하라고 하셨습니다 그럼 여기서 궁금한 것이 이렇게 실무적인 접근으로 설계를 한다면(대리키) 항상 키는 단일컬럼 키니까 복합키가 아니라서 항상 제 2정규형을 만족하는 것인가요??
@Test @DisplayName("하위 댓글이 삭제되고, 삭제되지 않은 부모면, 하위 댓글만 삭제한다.") void deleteShouldDeleteChildrenOnlyIfNotDeletedParent() { // given Long articleId = 1L; Long commentId = 2L; Long parentCommentId = 1L; Comment comment = createComment(articleId, commentId, parentCommentId); given(comment.isRoot()).willReturn(false); Comment parentComment = mock(Comment.class); given(parentComment.getDeleted()).willReturn(false); given(commentRepository.findById(commentId)) .willReturn(Optional.of(comment)); given(commentRepository.countBy(articleId, commentId, 2L)).willReturn(1L); // 이 부분 given(commentRepository.findById(parentCommentId)) .willReturn(Optional.of(parentComment)); // ... 위 테스트에서 given(commentRepository.countBy(articleId, commentId, 2L)).willReturn(1L); 이 부분 때문에 질문을 드렸습니다. commentRepository.countBy() 에서 commentId = 2L 을 부모로 갖는 comment는 아무도 없으므로, 0L 을 반환하는 것이 옳다고 이해했는데, 강의에선 1L 을 반환하셨습니다! (물론 서비스 계층의 메서드에서 hasChildren() 의 판정 로직상 0L 과 1L 은 동일한 결과를 반환하므로 테스트 결과에는 영향을 주지 않는 것 같습니다.) 카운트 쿼리의 동작 부분을 제가 잘못 이해한 것인지 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 궁금한게 있는데요 선생님 강의중에서 데이터베이스 시리즈 꼭 자바를 알아야만 들을 수 있는건가요?백엔드가 파이썬으로 공부중인데 자바를 또 배워야할까요?
안녕하세요 선생님, 단원정리문제를 풀다 이해가 되지 않는 부분이 있어 문의드립니다. 바로 Q&A상단에 같은 문의가 있긴한데 올려주신 답변으로는 이해가 잘 되지않아 문의드립니다. 문제7번) 관계에서 1:M관계에 대한 문제입니다 [학생 - 강의] 한학생이 여러강의를 들을 수있고 한강의에 여러학생이 듣는다는게 일반적인 사회적 통념인것같은데 어째서 이게 1:M인지 모르겠습니다. '학생 - 수강신청' 이런 느낌이엇으면 이해가 됬을거같은데 어째서 학생-강의 가 1:M이 되는걸까요? 보편적으로 시험에서 나온다면 '강의'라는 것은 강의의 종류를 말하는것인지(ex. sql강의, 빅데이터강의) 강의를 듣는다는 행위인지(ex.수강신청)가 궁금합니다. [강사 - 과목] 한강사가 여러과목을 할수있고, 한과목에는 한강사가 연결된다는것이 일반적인 사회적 통념이라 해당부분은 이해했습니다! [주문 - 주문상세] 한주문에 여러주문상세가 만들어질 수 있어서 1:M인걸까요? 주문상세 라고 하는건 A주문건에 대한 상세라고 생각해서 1:1관계라고 생각했는데 이거는 좀 다른 해석이 되는걸까요? 앞에 수업에서도 계속 헷갈렸는데, 마지막 단원정리에서까지 틀리니 확실히 알고 넘어가야겠다 싶어서 문의드립니다!
1:11부터 이전 시간의 예제를 실행했을 때, 왜 0bytes가 나오는지 설명해주시는 부분에 대한 질문입니다! 제가 혼자서 생각해봤을 때는 "버퍼 인스턴스에 두 개의 비동기 write 작업이 동시에 접근해서 발생한 스레드 동기화 문제"라고 생각했는데, 강사님께서는 "native 수준에서 비동기 쓰기를 처리하려면 각각의 버퍼가 필요하다"고 설명해주셨습니다. 버퍼에 접근해서 데이터를 읽어오면 pos가 읽은 바이트수만큼 증가하고, 그 다음에 버퍼에 접근한 writer는 pos위치부터 읽기 시작하는데 그 뒤로는 데이터가 없기 때문에 읽지 못하게 됩니다. 그런데 매번 0bytes가 나오는건 아니고 어떨 때는 34bytes가 나오기도 했습니다. "버퍼에 접근해서 데이터를 읽어서 pos를 읽은 바이트 수만큼 증가"연산을 하기전에 버퍼에 접근하게 되면 데이터를 읽어올 수 있게 되는 것 같다고 생각했습니다. buffer.get(data.getBytes()); 위 코드를 asyncChannel.write 하기 전에 실행해본결과 모두 0bytes가 나오는 걸 보고, 버퍼의 상태에 따라서 결과가 달라진다고 판단했습니다. 따라서, 버퍼에 두 스레드가 동시 접근하면서 발생하는 동기화 문제다 라고 생각했습니다! 제가 이해한 것이 틀린것인지 강사님과의 답변과 어떤 차이가 나는건지 궁금해서 질문남깁니다!
현재 대학교 3학년에 복학 예정이며 백엔드 프로젝트(JAVA)를 공부하고 있는 대학생입니다. 여러 진로를 알아보던 중 우연히 해당 강의를 접하게 되었습니다. 우선 백엔드로 여러 프로젝트를 하고 있는 중인데, 제가 아직 지원하고자 하는 계열을 딱 하나로 정하지 못한 상태입니다. 4학년까지 백엔드 프로젝트를 하면서 방산기업들 뿐만 아니라 다른 분야(대기업, 금융권 등등)도 노려볼 생각인데, 자바와 백엔드 프로젝트가 방산 기업과 핏하지 않는 것 같아서 걱정이 됩니다( 방산기업들은 주로 C,C++사용 등등 ). 혹시 자바와 백엔드 포트폴리오만으로도 설명만 잘한다면 방산 기업 지원시에 플러스 점수를 받을 수 있을까요? 아니면 C언어나 다른 프레임워크들을 배워서 다른 프로젝트를 진행해보는 것이 좋을까요? + 현재 백엔드 공부하는 대학교 3학년 학생이 어떤 방향으로 준비해나가면 좋을지 질문 드리고 싶습니다! 긴 질문글 읽어주셔서 감사합니다. 추운 겨울 감기 조심하세요 !!
MemberDetail 테이블의 UK_MEMBER_DETAIL_PROFILE_ADDRESS 유니크 제약 조건과 관련해서 질문이 있습니다. 39장 강의 마지막 부분에서, 해당 프로파일 주소(profile_address)를 빈 문자열로 바꿔 삭제할 수 있는 부분 테스트를 추가 하셨는데, 그런데 이렇게 되면 여러 사용자가 프로필 주소를 빈값으로 변경 할 경우 제약 조건에 충돌이 발생할 수 있을 것 같습니다. profile_address 값을 빈값으로 설정할 수 없도록 테스트를 조정하는게 더 맞아 보이는데 제가 생각한게 맞을까요?
안녕하세요 강사님. Stream 연습문제를 풀려고 보니 예제 코드가 잘려있네요. 첫번째 예제만 그런게 아니라 다른 예제도 마찬가지 입니다. 같은 예제 환경에서 정답 결과를 확인하여 연습해보고싶은데 어떻게 하면 좋을까요? public static List<Car> cars = List.of( new Car(CarBrand.Volkswagen, CarType.SEDAN, "티구안", new Car(CarBrand.BMW, CarType.SUV,"미니", 33_000_000, new Car(CarBrand.Benz, CarType.SUV,"G바 겐", 50_000_000 new Car(CarBrand.Benz, CarType.SEDAN, "E-Class", 28_ new Car(CarBrand.Ford, CarType.SUV, "익스플로러", 18_0 new Car(CarBrand.Jeep, CarType.SUV, "랭글러", 23_000_ section1-class03-Stream API 3 new Car(CarBrand.Volkswagen, CarType.SUV, "투아렉", 4 new Car(CarBrand.Volkswagen, CarType.SUV, "골프", 43_ new Car(CarBrand.Jeep, CarType.SEDAN, "체로키", 35_00 new Car(CarBrand.Jeep, CarType.PICKUPTRUCK, "글래디에이 );
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 13강 Redis 캐싱 시 발생하는 대표 문제 사례와 해결책3 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 이력서에 써갈수 있는 이력 제시한다음에 다음강의에 실제 할수있는 과제가 있다고 써져있는데요. 왜 다음에 바로 강의 마무리가 되나요?? 뒷부분이 없어요
킬구형 내가 그동안 보면서 정리한내용으로, 실습을 진행해보려고 혼자 스스로 파일을 만들었어. 실습 환경은 h2 데이터 베이스로 테스트 했고, 메타테이블은 자동으로 만들어졌어. 간단한 스텝과 잡을 만들어서 콘솔에서 잘 실행되는것 까지는 확인을 했는데 실제 데이터 베이스 테이블인 batch_job_instance와 같은 테이블에는 데이터가 들어가지 않아. 혹시 몰라서 db url도 확인해봤는데 정확하게 일치하고.. 이런경우는 어디를 확인해보면 제일 좋을까..? 콘솔에서 에러도 나지 않고 정상적으로 배치가 실행돼서 답답해 미치겠어 ㅠㅠㅠ 콘솔에서 insert 쿼리는 안나가고 있는데, 쿼리가 왜 안나가는지를 도통 모르겠어 ㅠㅠ 다 잘되는데 메타테이블에만 데이터가 들어가지 않네.. 참고로 tasklet 방식으로 테스트 해봤어. 부트 4.0.1 버전 사용하고 있어 킬구형 강의자료 에서도 중간에 postgresql로 전환하던데 혹시 h2는 뭔가 지원을 하지 않는걸까?
안녕하세요! [part6.구름의 개수1] 강의에서 DFS vs BFS 중 DFS 사용하면 스택오버플로우 가능성이 있어서 대안을 말씀 해주셨는데요. 암시적그래프에서 구현 시에 해당하는건지, 다른 케이스에서도 그러한지 궁금합니다. 암시적그래프에서 모두 1인 경우 재귀가 많이 호출되어서 그게 문제인거같은데, 다른 유형에서는 그런 경우가 없을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요 질문을 보면 사용자에게 정수를 받는 다는 전제일 때, 입력값이 12345 이면 1,2,3,4,5으로 나오지만 34567 로 정수값을 입력하면 출력값이 3,4,567 로 나오는데 도저히 해답이 생각 안나서요ㅠ 어떻게 코드를 수정해야 다른 정수들을 넣어도 4,5,6,7,8 <<이런식으로 나올 수 있을까요?