묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨오브젝트 - 기초편
객체 지향 설계 원칙에 대한 질문입니다
안녕하세요!객체 지향에 대해 깊이 있게 학습할 수 있는 좋은 강의를 만들어주셔서 감사합니다. 이번에 완강했는데, 복습을 시작하기 전에 강의를 들으면서 생겼던 궁금증을 먼저 풀고 복습을 진행하면 좋을 것 같아 질문을 드립니다! '협력에 필요한 행동을 먼저 결정하고 행동에 적합한 객체를 나중에 선택하라'는 원칙이 궁금합니다. 협력을 설계하려면 협력할 대상이 필요할 텐데, 협력 대상인 객체는 나중에 선택한다면, 협력을 설계할 때는 구체적으로 무엇을 대상으로 삼아서 진행하게 되는걸까요? 요구사항 분석에서 도출된 도메인 개념이나 역할 같은 것들을 임시 대상으로 두고 협력을 설계하는 걸까요?제가 설계 회의 경험이 별로 없어서 그런지 설계가 진행되는 일련의 과정이 머릿속에 잘 그려지지 않아 이해를 잘 못하고 있는 것 같습니다. 객체 지향 설계(코드 배치 방법) 이전에 진행되는 사전 설계 작업에서 도출된 도메인 모델이 중심이 된다고 보면 될까요?
-
해결됨모르면 승진 안되는 시스템 디자인
websocket 연결 질문
일반적으로 websocket 연결은 클라이언트 쪽에서 먼저 하나요? 혹은 서버쪽에서 먼저 하게 되나요?또한 연결을 끊을때도 클라이언트/서버 어느쪽에서 먼저 하게 되는지 궁금합니다!백그라운드 상태에서도 websocket 연결은 계속 유지되고 있나요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
자격증 관련 문의
안녕하세요 🙂유익한 강의 감사드립니다. 다름이 아니오라 설계 1, 2편 까지만 들어도 SQLD, SQLP 자격증 취득이 가능할 수준일지 여쭙고 싶습니다. 감사합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
DDL 구문에서의 COMMENT 활용 방법 문의드려요.
안녕하세요. 테이블 정의서를 열어서 보다 자세한 사항을 확인하기 전에접속된 세션에서 MySQL에 생성된 DDL 구문을 툴에서 추출하여 먼저 구조를 파악하고자COMMENT를 활용하여 "컬럼 한글명(논리명)" 기입하여 사용하려고 하는데비고 같이 진짜 설명을 써놓는 사례도 있는 것 같아서 혹시, 실무에서 COMMENT를 어떻게 활용하시는지 궁금합니다. Ex) -- 실습용 쇼핑몰 테이블 정의서 member 테이블의 login_id에 -- comment "컬럼 한글명(논리명)" 적용 예시 (하고 싶은 방향)login_id VARCHAR(50) NOT NULL COMMENT '로그인 ID' -- comment "비고 같이 길게 설명" 예시login_id VARCHAR(50) NOT NULL COMMENT '로그인 시에만 사용하는 별도의 아이디로, 이메일 및 블로그 등을 통해 외부로 노출되지 않는 보안설정입니다. '
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
레거시 프로젝트를 현대적 PK 설계 방식으로 변환하는 과정이 궁금합니다.
현대적 설계에서는 대리키 PK와 자연키 UNIQUE 제약조건으로 데이터베이스 설계하는 것이 합리적이고 안정적이라고 하셨는데요아직 대부분 레거시 프로젝트는 자연키를 PK로 사용하거나, 일부 테이블은 대리키로 PK를 사용하지만 여전히 많은 테이블들은 해당 일부테이블의 PK를 FK를 사용하여 복합 PK로 생성하여 사용하는 경우가 많습니다.이런 레거시 프로젝트들의 복합 PK를 대리키 PK로 변환한다고 하면 전체적인 데이터베이스 구조를 재 설계해야 하는것이 맞겠지만 만약 기존 운영중인 테이블 구조를 유지하면서 PK를 변환하게 된다면, 기존 운영중인 테이블에 대리키 PK를 생성 후 기존 사용중이던 복합 PK에 UNIQUE 설정을 추가해주는 방식으로 변환하면 큰 문제가없을까요? 아니면 비즈니스 상황에따라 추가 제약조건을 추가해야 할 것들이 있을까요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
데이터 베이스 판단 기준
안녕하세요실무에서 RDBMS, NoSQL을 선택하는 기준에 대해서 궁금합니다.어떤 서비스에서 어떤 데이터 베이스가 더 적합한지 판단하는 기준이 궁금합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
현업에서 많이 사용되는 상용 툴은 어떤게 있나요?
안녕하세요!강의에서 상용툴에 대한 코멘트를 짧게 해주셨는데, ERD나 DDL 만들 때 현업에서 많이 사용되는 상용툴은 어떤게 있는지 궁금합니다!
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
실무에서 외래키의 사용
안녕하세요. 강의 잘 보고 있습니다!다름이 아니라, 제가 알고있는 짧은 지식으로는실무에서는 실제 외래키 관계가 있더라도, 외래키를 선언하는걸 지양하는 것으로 알고 있습니다. 혹시 영한님은 실무에서 외래키를 선언하여 외래키 제약조건 사용을 지향하셨는지가 궁금합니다!!
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
draw.io 다크모드 어떻게 할수있을까요?
영한님 안녕하세요.강의 영상 처럼 draw.io 다크모드로 변경하고 싶은데 어떻게 할수있을까요? 감사합니다.
-
해결됨분산 데이터 모델링
샤딩한 테이블에서 B Tree 인덱스를 사용하는 것
예시로 들었던 '게시판 별 게시글' 같은 인덱스 테이블에서 B Tree 인덱스를 사용하면 된다는 식으로 말씀하셨습니다.근데 전통적인 RDBMS에는 샤딩 기능조차 존재하지 않는데, 분산된 데이터베이스에서도 테이블 수준의 B Tree 인덱스처럼 동작하는 것처럼 말씀하신 것 같아, 이것이 맞는지 문의 드립니다.
-
해결됨오브젝트 - 기초편
[5-1] Screening과 Movie의 의존관계에 대한 궁금증 질문입니다.
안녕하세요! 추석에 좋은 강의 잘 듣고 있습니다!5-1 강의 3분 20분초에 보면 Screening은 프로퍼티로 movie를 가지게 되므로 Screening -> Movie의 의존성을 가지게 되는데요이때 Movie는 내부 구현에서 메서드의 파라미터로 Screening을 받는 구조에서 프로퍼티가 아닌 파라미터지만 Movie -> Screening의 의존이 생긴다고 볼 수 있지 않을까요?이렇게되면 Screening <-> Movie의 상호의존성이 생긴다고 볼 수 있을거 같은데 이러한 상호 의존도 괜찮나요?제가 사용하는 언어인 Swift에서는 코드의 양이 조금 늘어나더라도 이 경우 프로퍼티나 파라미터 둘 중에 하나를 프로토콜(인터페이스)로 변경해서 상호 의존성을 끊어주는 방식을 사용하는데 트레이드오프로 생각하고 같은 계층에 속한 모델의 경우 이정도의 상호 의존은 생겨도 놔둘것인지 이러한 중간 객체 추가로 상호의존을 끊을것인지 선택하면 되는걸까요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
id bigint unsigned
테이블 만드실 때 id의 타입을 bigint 로 하고 unsigned는 선언하지 않으셨는데, 굳이 필요 없어서 사용하지 않으신걸까요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
created_at, updated_at 자동화는 DB, JPA 중 어느곳에서 하는게 좋을까요?
안녕하세요 영한님!11강에서 created_at과 updated_at 값을 데이터베이스의 DEFAULT CURRENT_TIMESTAMP과 ON UPDATE CURRENT_TIMESTAMP 기능을 사용하는 가이드에 대해 다뤄주셨는데요. Spring Data JPA를 사용하면 아래와 같이 @EnableJpaAuditing 을 사용하여 Application 단에서 Auditing 기능을 사용할 수 있는 걸로 알고 있습니다.@EntityListeners(AuditingEntityListener.class) @MappedSuperclass @Getter public class BaseEntity { @CreatedDate @Column(updatable = false) private LocalDateTime createdAt; @LastModifiedDate private LocalDateTime updatedAt; }만약 위와 같은 JPA 기능을 데이터베이스와 같이 사용한다면, Application 단에서 createdAt , updatedAt 값이 채워진 채로 저장되고, DB에서 한 번 더 덮어쓰는 구조가 될 것 같더라고요. 실무에서 created_at과 updated_at 값을 채울 때, @EnableJpaAuditing 과 데이터베이스의 DEFAULT CURRENT_TIMESTAMP과 ON UPDATE CURRENT_TIMESTAMP 중 어떤 것을 사용하는게 더 나은 선택일지 궁금합니다. 각각을 사용했을 때 유리한 케이스가 따로 있을까요?
-
해결됨김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
이미 개발이 끝난 프로젝트에서도 용어사전이 필요할까요?
강의 도중 용어사전에 대해 나왔는데 현재 프로젝트가 이미 끝나서 배포가 된 상황인데 지금이라도 용어사전을 만드는게 나을까요...?
-
해결됨오브젝트 - 기초편
2-2. 변경과 의존성 / 데이터 내부 변경 시 setter가 변경의 여파를 흡수하는 방식은 어떤가요?
안녕하세요, 강사님. 강의 '2-2. 변경과 의존성'에서 DiscountPolicy의 startTime과 endTime을 TimeInteval로 통합하면 외부에서 getter를 통해 startTime, endTime을 참조하는 코드가 변경되어야함을 보여주셨습니다.condtion.getStartTime() -> condition.getInterval().getStartTime(); 위 예제를 getStartTime과 getEndTime 메서드가 변화를 여파를 흡수하는 방식으로 변경을 할 수도 있었을텐데 강의의 예제처럼 ReservationService가 변경되어야하도록 코드를 변경하신 관점이 궁금합니다.// interval을 노출시키는 대신 endTime, startTime의 getter에서 변경의 여파를 흡수하고 속성없는 프로퍼티로 동작 public class DiscountCondition { public enum ConditionType { PERIOD_CONDITION, SEQUENCE_CONDITION } ... private TimeInterval interval; ... public LocalTime getStartTime() { return interval.getStartTime(); } ... public LocalTime getEndTime() { return interval.getEndTime(); } } 데이터 변경의 여파가 클라이언트에 전달되는 것은 데이터를 다루는 로직이 데이터 외부에 있기 때문이라는 점은 강의에서 충분히 전달해주셨기에 어느정도 이해했다고 생각합니다. 그리고 위에 질문드린 내용은 일부 속성들이 통합되면서도 기존에 데이터 외부로 제공하던 속성(startTime, endTime)을 어떻게든 그대로 제공할 수 있는 상황(interval에서 꺼내줄 수 있음)에 한정된, 숲 보다는 나무에 관한 질문일텐데... 그래도 자꾸 생각이 나서 질문을 드리게됬습니다.어제에 이어 또 질문을 드리지만 좋은 연휴 되시길 바라는 마음은 정말입니다.감사합니다.
-
해결됨오브젝트 - 기초편
[5-1] DiscountPolicy의 getDiscountAmount 추상 메서드 관련 질문입니다,
5-1강의 7분 10초 경에서 추상 클래스인 DiscountPolicy의 calculateDiscount 메소드 구현 관련하여 질문 있습니다.calculateDiscount 메서드의 로직에서 상영(screening)이 DiscountCondition 중 하나라도 만족하면 getDiscountAmount(screening)이 호출되는데, 이 때 AmountDiscountPolicy와 PercentDiscountPolicy 중 누가 오버라이드한 getDiscountAmount가 호출되는지 궁금하여 질문드립니다.애초에 Movie 객체가 생성될 때 AmountDiscountPolicy와 PercentDiscountPolicy 중 해당되는 할인 정책을 멤버 변수로 사용할 수 있게 된다고 이해하면 될까요? 객체지향에 대해 심도 있게 배울 수 있는 강의라 너무 잘 듣고 있습니다. ㅎㅎ
-
해결됨오브젝트 - 기초편
2-4. 절차에서 객체로 / 도메인 구조를 따라 클래스 구조 변경 부분
강의: 2-4. 절차에서 객체로강의 부분: 5:46 ~질문 DiscountPolicy를 통해 DiscountCondition을 캡슐화한 상태에 대해 'DiscountPolicy의 public 메서드를 수정하는 경우에도 영향을 최소화할 수 있습니다.'라고 말씀하신 부분이 잘 이해가 안됩니다. DiscountPolicy가 전면에 나와 ReservationService에 의해 참조되는 중이니 DiscountPolicy의 public 메서드 시그니처가 변경된다면 ReservationService가 직접 영향을 받으리라 생각됩니다. 혹시 DiscountCondition을 수정하여 그 여파가 DiscountPolicy의 메서드 바디를 수정하게 하더라도 ReservationService는 DiscountPolicy의 메서드를 호출만 하는 상태이니 ReservationService에는 영향이 가지 않는다는 의미로 이해하면 될까요?안녕하세요, 강사님, 그리고 뭔가해서 눌러보셨을 다른 수강생분들.모두 좋은 추석 되시길 바랍니다.감사합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
MySQL Workbench 다운로드 실패 이슈
2025년 10월 4일 기준 MySQL Workbench 최신 버전인 8.0.43 버전 다운로드 시 크롬에서 다운로드 실패하는 이슈가 있네요!저는 Archives에서 8.0.42 버전을 다운받으니 정상적으로 받아서 설치할 수 있었습니다.혹시 다른 수강생분들도 비슷한 이슈 겪으실까 싶어 글 남깁니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
list, json 컬럼은 지양하나요?
관계형 DB에서도 데이터로 list, json이 가능하게 되는것 같던데... 실무상 거의 안쓰는 건가요?이걸 이용하면 쌤이 말씀해주시는 룰에 안맞게 되서, 일단은 피하면서 이것저것 연습해보는 중인데, 좀 갑갑하네요;; 교과서적으로는 피하는게 답이겠지만, 실무상으로도 피해야는 걸까요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
MYSQL 코드 질문
수업 외 질문을 가져와서 죄송합니다만 간략하게 한가지만 여쭙고 싶습니다. 이 Overlapping 과 Complete 을 동시에 만족하는 코드를 3개의 Table 을 통해서 구현할때 Trigger 를 쓰지 않고도 구현할 수 있나요? (단순히 Null, Check, IsStudent, IsFaculty 등을 이용해서요)