묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
[DB설계] 탈퇴 유저의 구독 정보 유지 및 이메일 마스킹 관련 질문입니다.
안녕하세요, 유저 테이블과 구독 테이블 설계 중 해결하기 까다로운 지점이 생겨 질문드립니다.*현재 상황을 보다 이해하시는데 문제가 없으시기 위해 ai로 질문을 정리한점 먼저 말씀드립니다.1. 현재 상황 및 서비스 정책유저 테이블:id(PK), email(UK) / 탈퇴 시 소프트 삭제, 개인정보 보호를 위해 이메일 마스킹 필수.구독 테이블: 현재 활성화된 구독 정보 딱 1건만 관리 (이력은 별도 테이블 존재).서비스 정책: 탈퇴 후 동일 이메일로 재가입 시, 기존 로우 복구가 아니라 새로운 로우로 Insert 됩니다. 단, 재가입 시 과거 구독 정보는 그대로 이어받아야 합니다.2. 제가 고민해 본 방법들과 예상되는 문제점생각한 방법 1) 구독 테이블이 유저 PK(id)를 외래키로 바라보게 한다.예상 문제: 재가입 시 유저 테이블에 새 로우가 Insert 되면서 새로운 PK를 발급받기 때문에, 과거 PK를 바라보고 있던 구독 테이블과 연결 고리가 끊어집니다.생각한 방법 2) 유저 테이블에 '이메일 해시(유니크X)'를 두고, 구독 테이블과 해시값으로 매핑한다.예상 문제: 해시는 개인정보가 아니므로 탈퇴 후에도 유저 테이블에 남겨둘 수 있어 재가입 매칭은 가능합니다. 하지만 유저가 중간에 이메일을 변경하는 경우, 유저 테이블의 이메일 해시뿐만 아니라 구독 테이블 및 구독 이력 테이블의 해시값까지 전부 동시 UPDATE 쳐야 하는 번거로움이 생깁니다.3. 질문 요약개인정보 보호를 위해 유저 테이블의 이메일 원본은 마스킹하면서도, 재가입 시 동일인임을 식별해 과거 구독 정보를 매칭해 주어야 합니다. 여기에 유저의 이메일 변경 가능성까지 고려해야 하는 상황입니다.이 경우 구독 테이블의 매핑 키 체계를 어떻게 잡는 것이 가장 깔끔하고 현명한 DB 설계 원칙일까요? 실무에서 이런 케이스를 해결하는 정석적인 아키텍처 가이드가 궁금합니다!
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
자연키 vs 대리키 실무질문
자연키vs대리키 강의를 보면 대리키를 사용하는게 안정성,유연성에 있어 많은 장점이 있어 대부분 대리키를 사용한다고 하셨는대,다음과 같은 케이스에도 대리키를 쓰는게 좋을지 궁금합니다. (뒤에 강의에 나올수도 있지만 현시점 궁금해서 질문드립니다.)1. 조인테이블의 경우 a,b테이블의 pk인 대리키를 이용해 복합키를 만들어서 pk로 쓰면 될지, 아니면 그것 역시 따로 대리키를 만들어야 할지 궁금합니다.2. 정말 단순한 enum 형태의 테이블일 경우, 예를 들어 유저상태값을 표현하기위해 정상,휴면,탈퇴 등을 기록하는 테이블의 경우 자연키, 대리키 어떤거를 써야할지 궁금합니다. 제가 경험한 바로는 enum 형태의 간단한 테이블조차 대리키를 사용하니 유저 테이블을 조회할때 간단한 상태값조차 조인을 해서 봐야하니 불편하더라고요.감사합니다.
-
미해결[2026] 비전공자도 한 번에 합격하는 SQLD 올인원
38번 문제 보기 3,4번
보기 3번 4번 구문이 실행은 되지만 궁금해서 질문 드립니다.rollup (col1, (col1, col2))를 풀어서 쓰면(co1, col1, col2), (col1), () 이렇게 나오는데보통은 rollup(col1, col2)로 쓰지않나요?cube도 비슷한것 같습니다.그룹핑은 중복이 제거 되서 실행 되는 것 같은데 보통은 안쓰는 것 같아서 질문드립니다.
-
미해결[2026] 비전공자도 한 번에 합격하는 SQLD 올인원
14번 문제
14번문제 보기 1번이 약간 애매해서 질문드립니다.cube는 모든 조합을 하고 rollup이 순서에따라 달라지는거 아닐까요?ex cube(a, b) = (a, b), a, b, () 이고rollup(a, b) = (a, b), a, () 인데cube는 순서를 바꿔도 같은내용인데 rollup은 순서를 바꾸면 달라지는거 아닌가요?
-
미해결LLM 활용 Hadoop & Hive 빅데이터 실무 AI Tutor와 함께하는 Hadoop Ecosystem
결재했는데도 강좌가 안보입니다.
안녕하세요? 강좌가 4개 밖에 없지만,들어보고 싶은 강좌라 결재를 했고, 강좌를 만들어서 올리는 것으로 생각했는데,수강평에 4개섹션에 30개 강좌로 구성되었고, 결재를 하면 수강이 가능하다는답글을 달아주신것을 봤습니다. (https://inf.run/mjT2D)그런데 결제 전이나 결제 후나 보이는 강좌는 현재 공개된 4개 밖에 보이지 않습니다.다시 확인 부탁드립니다.
-
미해결[2026] 비전공자도 한 번에 합격하는 SQLD 올인원
모바일 앱 쿠폰
언제 발급될까요?서식 작성했습니다!:D
-
미해결SQL 코딩테스트를 위한 첫 걸음
SQL 기본 문법
안녕하세요 !! 혹시 SQL 기본 문법을 빠르게 익히고 강의를 듣는게 나을까요?!
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
1:N 관계에서 중간테이블 (연관엔티티)
안녕하세요 우선 값진 강의 만들어주셔서 감사드립니다. 취준을 하며 개인 프로젝트를 진행 중인데, 고민 해오던 부분들에 많은 도움이 되었습니다. 강의를 완강하고, 학습한 내용들을 바탕으로 이전에 진행했던 프로젝트의 DB를 재검토하고 재설계 해보고 있습니다.구글링, 해당 게시판에 올라온 이전 질문들 참고하고 ai와 대화를 하고도 완전하게 확신이 서지 않는 부분이 있어서 질문드립니다.우선 제가 만들고 있는 서비스는 "좌석이 있는 공연 예매 시스템" 입니다.공연 데이터 생성시 해당 공연의 좌석들이 함께 생성됩니다. 즉 특정 공연의 특정 좌석들이 고유하게 생성됩니다.그리고 사용자는 좌석을 다중 선택하여 선점하고 예매할 수 있습니다.(예매 - 좌석) 관계는 (1:N) 입니다.그래서 기존 DB 에서는 N 쪽인 좌석이 예매 id 를 fk 로 들고 있는 간단한 형태로 진행하였습니다. 그런데 강의 중 다대다(M:N) 관계 부분에서 연결 테이블의 본질이 관계 자체를 하나의 독립된 데이터로 보고, 그것을 테이블로 모델링 하는 것 이라는 내용을 접하고,비록 1:N 관계이지만, 예매 - 좌석 관계가 엔티티로 승격될만 한가에 대한 고민을 했습니다. (강의에서 예시로 사용된 주문 - 주문상품 - 상품 을 보며, 좌석을 수량이 단 하나뿐인 상품이라고 생각한다면 예매 - 예매좌석 - 좌석 형태가 비슷하다고 생각했습니다.) 이유가 충분하다면 실무에서도 N:M 관계에서 뿐만 아니라 1:N 관계에서도 중간테이블 (연관엔티티)를 두는 설계를 실제로 하는지, 현재 상황에서도 (질문이 너무 길어지고 복잡해질까봐 제가 판단한 이유들을 설명드리진 않았지만) 연관관계 엔티티를 두는 것이 타당한 판단일지 고견 여쭈어봅니다. 긴 질문 읽어주셔서 감사합니다!
-
해결됨실리콘밸리 엔지니어와 함께하는 SQL
dvdrental 서버에 접속할 수 없어요
4강까지 수강했습니다. pdAdmin4에 dvdrental을 만들었는데, 이게 비밀번호를 분명 mypassword로 설정했는데 재접속 하니까 안되네요. 어떻게 해야 하나요?
-
미해결[2026] 비전공자도 한 번에 합격하는 SQLD 올인원
속성 핵집문제 2번
보기 중에 '속성은 하나의 값만 가진다.' 라는 보기가 맞는 보기로 해설이 되어있는데, 바로 직전에 설명하신 다중 값 속성(전화번호, 이메일) 이라는게 있지 않나요?
-
미해결[2026] 비전공자도 한 번에 합격하는 SQLD 올인원
chapter 2 단원정리문제 49번
먼저 유사한 질문이 있었는지 검색해보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.49번 문제 해설에는 david phone에 문자가 포함됐다고 하는데 문제에는 숫자만 있는 것 같습니다.확인 부탁드리겠습니다.
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
공통코드 관련한 질문 드립니다.
안녕하세요, 공통코드 관련하여 코드그룹, 코드상세 테이블 설계 강의 잘 들었습니다.관련하여 2가지 질문이 있습니다!1. 혹시 사내에 dataware라는 메타시스템을 사용할 경우에는 어떤 식으로 운영을 하는지 궁금합니다. 전 회사에서는 메타시스템은 단순 정의 용도로 사용하고, 모든 코드값은 enum으로 사용을 했었는데요~강의 내용에 있는 것처럼 값이 바뀔 때마다 계속 재배포 작업을 해야 하긴 했지만, 그 외에 특별한 이슈는 없었던 것 같습니다. (배치성 프로젝트라 빠른 대응이 필요하지 않았음) 현 회사에서는 아직 정해진 정책은 없지만, 메타DB를 어플리케이션에서 접근할 수 있도록 하는 방법은 어떨지도 고민하고 있습니다.그래서 일반적으로는 메타시스템, 공통코드 테이블, enum을 어떤 식으로 mix하여 사용하는지 궁금합니다. 추가로 고유한 컬럼 인식을 위해 최대한 유니크한 컬럼명을 사용하고 있는데요~예를 들어, 사용자로그인상태코드라는 컬럼이 있더라도 사이트에 따라 아래처럼 분리하는 경우가 존재합니다.A사이트사용자로그인상태코드B사이트사용자로그인상태코드이 경우 같은 아래처럼 코드값을 다르게 정의할 경우 현실적으로 체크하는 것이 좀 어려운 것 같습니다. A사이트의 경우 0:정상, 1:잠금, 2:정지, 3:휴면, 4:탈퇴 B사이트의 경우 0:정상, 1:잠금, 2:탈퇴, 3:휴면 (B사이트는 정지 상태가 없음)같은 의미의 코드일 경우 같은 코드값을 가지게 하고 싶은데 영한님께서도 이러한 고민을 하신적이 있으신지 궁금하고 어떻게 해결하셨을지도 궁금합니다~ 감사합니다.
-
미해결[2026] 비전공자도 한 번에 합격하는 SQLD 올인원
extract 함수 관련 질문
먼저 유사한 질문이 있었는지 검색해보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.TO_CHAR(HIREDATE, 'YYYY')대신EXTRACT (YEAR FROM HIREDATE)이거를 쓰는 이유가 뭘까요?
-
미해결Do it! SQL 입문
백업파일이 안보입니다.
백업파일이 안보이는데 따로 어디서 다운 받는 곳이 있나요??
-
미해결데이터 분석 SQL Fundamentals
최신버젼 다운로드
최신버젼으로 업그레이드가 되고 있는데, 최신 걸로 다운받아도 상관없나요
-
해결됨[백문이불여일타] 데이터 분석을 위한 기초 SQL
IN 사용방법 문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. IN 연산자를 사용할때 LIKE나 NOT LIKE와 함께 사용할 수 없나요? 예를 들어, A로 시작하거나 E로 시작하는 영화 제목을 찾고싶을때 TITLE LIKE 'A%' OR TITLE LIKE 'E%' 로 쓰지 않고,TITLE LIKE IN ('A%', 'E%') 로 사용할 수는 없는건가요?오류가 나서 여쭤봅니다!
-
미해결LLM 활용 Hadoop & Hive 빅데이터 실무 AI Tutor와 함께하는 Hadoop Ecosystem
다음 강의는 언제 올려주시는지요?
좋은 강의 감사드립니다. 강의를 계속 듣고 싶습니다. 다음 강의는 언제 올려주시는지요? 또한 완강은 언제쯤이 될지 궁금합니다.감사합니다.
-
미해결SQL 코딩테스트를 위한 마지막 걸음
리뷰를 가장 많이 작성한 회원들 조회
안녕하세요 최근에 코테를 봤었는데,비슷한 문제가 프로그래머스에 있어서 어떤 로직이 맞는지 궁금해서 질문을 남깁니다 프로그래머스의 문제는 SQL 고득점 kit에 있는 "그룹별 조건에 맞는 식당 목록 출력하기" 입니다. MySQL로 진행했고, 리뷰를 가장 많이 작성한 멤버id를 구하기위해 서브쿼리를 작성후 rnk=1을 사용했습니다. 이후, 리뷰 가장 많이 작성한 멤버가 여러명일 수 있으므로 바깥에서 in을 사용하여 최종적으로 order by로 정렬했습니다.SELECT MEMBER_NAME, REVIEW_TEXT, DATE_FORMAT(REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE FROM REST_REVIEW r INNER JOIN MEMBER_PROFILE m ON r.MEMBER_ID = m.MEMBER_ID WHERE r.MEMBER_ID IN ( SELECT MEMBER_ID FROM( SELECT MEMBER_ID, COUNT(MEMBER_ID), RANK() OVER(ORDER BY COUNT(MEMBER_ID) DESC) AS RNK FROM REST_REVIEW GROUP BY MEMBER_ID ) AS A WHERE RNK = 1 ) ORDER BY REVIEW_DATE, REVIEW_TEXT 최근 코테에서는 가장 높은 점수를 가진 회원의 부서ID를 구해야 하는 문제였고, 가장 높은 점수를 가진 회원이 여러명 일 경우 모두 출력하라고 명시되어있었습니다.해당 코테에서도 rank() over (order by score desc)를 쓰고 바깥에서 rnk=1인 회원id를 구해 본 테이블과 join을 하는 로직으로 풀었는데 이렇게 접근하는게 맞는지 궁금합니다.
-
미해결[4주 완독 챌린지 / 영상 강의] 네이버 개발자 출신이 들려주는 AI 시대 개발자 취업 전략
회사 내 AI 툴 사용에 대한 질문
ㅎㅎ.. 책을 읽다 문득 궁금해져서 질문 남겨봅니다..!신입으로 처음 입사해 프로젝트나 업무에 참여하게 되면 모르는 부분이 많아 AI 툴의 도움을 받고 싶을 때도 있을 것 같은데요. 실제 회사에서는 보안이나 정보 유출 등의 이유로 ChatGPT 같은 AI 툴 사용을 제한하거나 금지하는 경우가 많은지 궁금합니다.또 만약 사용이 제한된다면, 실무에서는 보통 어떤 방식으로 부족한 부분을 보완하며 업무를 익혀가는지도 궁금합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
일대일 fk 위치
안녕하세요.JPA 강의를 듣다가 궁금한 점이 생겨 질문드립니다.JPA 강의에서는 일대일 관계를 설명하면서 Member가 FK를 가지고 있는 방식이 더 좋다고 설명하셨고 김영한님께서도 주 테이블에 FK를 두는 방식을 더 선호한다고 말씀하신 것으로 해했습니다.그래서 저는 일반적으로 주 테이블이 FK를 가지고 있는 방식이 더 편리하다고 생각하고 있었습니다.JPA 강의에서 해당 이미지로 설명하셨어요. 그런데 이번 강의에서는 보조 테이블이 FK를 가지고 있는 방식이 더 좋다고 설명되어서 조금 헷갈립니다.저는 화면의 예시에서 Member가 주테이블,Locker를 보조 테이블이라고 이해했는데 강의마다 설명이 반대되는 것처럼 느껴졌습니다.혹시 제가 잘못 이해한 부분이 있을까요?