시스템 설계 · 중급
회원 관리 시스템을 설계할 때, '이메일 주소'와 '전화번호'를 저장하기 위한 데이터 타입을 선택해야 합니다. 적절한 데이터 타입과 길이를 선택하는 기준은 무엇이며, 잘못된 선택이 성능 및 저장 공간에 미치는 영향은 무엇인가요?
힌트 · 데이터의 실제 범위와 특성을 고려하여 최소한의 공간을 사용하면서도 유연성을 확보해야 합니다. 잘못된 타입은 저장 공간 낭비, 성능 저하, 데이터 손실을 야기할 수 있습니다.
VARCHAR정규식인덱스데이터 무결성저장 공간 효율성
모범답안
회원 관리 시스템에서 이메일 주소와 전화번호 데이터 타입을 선택할 때, 몇 가지 기준을 고려해야 합니다.
이메일 주소는 VARCHAR 타입을 사용하는 것이 일반적입니다. 최대 길이는 RFC 표준에 따라 254자이지만, 현실적으로 100자 내외로 충분합니다. 정규식을 사용하여 유효성을 검사하는 것이 중요합니다.
전화번호는 국가별, 지역별 형식이 다르므로 VARCHAR 타입이 적합합니다. 숫자 외에 하이픈, 괄호 등이 포함될 수 있기 때문입니다. 길이는 20자 내외로 충분하며, 저장 전에 특정 형식으로 정규화하는 것을 고려할 수 있습니다.
잘못된 데이터 타입 선택은 저장 공간 낭비, 인덱스 성능 저하, 심지어 데이터 손실까지 야기할 수 있습니다. 예를 들어, 전화번호를 INT 타입으로 저장하면 0으로 시작하는 번호를 저장할 수 없고, 국가 코드를 포함하기 어려워집니다. 또한, 지나치게 큰 VARCHAR 길이를 설정하면 인덱스 크기가 커져 검색 성능이 저하될 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 데이터베이스 설계 면접 질문
- "한 명의 고객은 여러 개의 주문을 할 수 있다"는 비즈니스 요구사항을 관계형 데이터베이스로 설계할 때, 어떤 테이블과 컬럼을 사용하여 1:N(일대다) 관계를 표현할 수 있을까요?
- 실무에서 데이터베이스를 설계할 때, 정규화(Normalization)와 비정규화(Denormalization)를 어떤 기준으로 적용해야 하며, 성능상의 이유로 비정규화를 고려해야 하는 상황과 그 단점은 무엇인가요?
- 특정 테이블의 쿼리 성능을 최적화하기 위해 인덱스를 설계해야 합니다. 어떤 인덱스 종류(예: B-tree, Hash, 클러스터링, 논클러스터링)를 고려해야 하며, 복합 인덱스(Composite Index)는 언제 유용하게 사용될 수 있는지 설명해 주세요.
- 외래 키(Foreign Key) 제약조건을 설정할 때, 'ON DELETE CASCADE', 'ON DELETE SET NULL', 'ON DELETE RESTRICT' 등의 옵션 중 어떤 경우에 각 옵션을 선택해야 하는지 구체적인 시나리오를 들어 설명해 주세요.
- 뷰(View)와 물질화된 뷰(Materialized View)의 차이점은 무엇이며, 각각 어떤 상황에서 사용하는 것이 적절한가요? 특히 물질화된 뷰가 대용량 데이터 환경에서 쿼리 성능 최적화에 어떻게 기여할 수 있는지 설명해 주세요.
- 대용량 테이블의 관리 및 성능 향상을 위해 파티셔닝(Partitioning)을 고려할 때, 어떤 종류의 파티셔닝(예: Range, List, Hash)을 선택할 수 있으며, 각각의 장단점과 적합한 사용 시나리오는 무엇인가요?