시스템 설계 · 기초
"한 명의 고객은 여러 개의 주문을 할 수 있다"는 비즈니스 요구사항을 관계형 데이터베이스로 설계할 때, 어떤 테이블과 컬럼을 사용하여 1:N(일대다) 관계를 표현할 수 있을까요?
힌트 · '고객' 테이블과 '주문' 테이블을 만들고, '주문' 테이블에 '고객' 테이블의 기본 키를 외래 키로 포함하여 연결합니다.
외래 키주 테이블자식 테이블관계형 데이터베이스참조 무결성
모범답안
네, "한 명의 고객은 여러 개의 주문을 할 수 있다"는 1:N 관계를 관계형 데이터베이스로 설계하는 방법에 대해 설명드리겠습니다.
가장 일반적인 방법은 두 개의 테이블, 즉 '고객' 테이블과 '주문' 테이블을 사용하는 것입니다. '고객' 테이블은 고객의 정보를 담고, '주문' 테이블은 주문 정보를 담습니다.
핵심은 '주문' 테이블에 '고객' 테이블의 기본 키를 외래 키로 포함시키는 것입니다. 예를 들어, '고객' 테이블에 customer_id라는 기본 키가 있다면, '주문' 테이블에 customer_id라는 외래 키 컬럼을 추가하여 각 주문이 어떤 고객에 속하는지 나타낼 수 있습니다.
이렇게 하면 '주문' 테이블의 각 레코드는 특정 '고객' 테이블 레코드를 참조하게 되고, 하나의 고객이 여러 개의 주문을 가질 수 있게 됩니다. 또한, 외래 키 제약 조건을 통해 데이터의 참조 무결성을 유지할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 데이터베이스 설계 면접 질문
- 정규화 단계 중 1차 정규형(1NF), 2차 정규형(2NF), 3차 정규형(3NF)이 각각 무엇을 의미하는지 간략하게 설명해주세요.
- 데이터베이스 테이블의 컬럼에 적절한 데이터 타입을 선택하는 것이 왜 중요한지, 그리고 어떤 점을 고려해야 하는지 설명해주세요.
- 데이터베이스 인덱스(Index)는 무엇이며, 어떤 상황에서 주로 사용하고 어떤 이점을 제공하나요?
- 실무에서 데이터베이스를 설계할 때, 정규화(Normalization)와 비정규화(Denormalization)를 어떤 기준으로 적용해야 하며, 성능상의 이유로 비정규화를 고려해야 하는 상황과 그 단점은 무엇인가요?
- 특정 테이블의 쿼리 성능을 최적화하기 위해 인덱스를 설계해야 합니다. 어떤 인덱스 종류(예: B-tree, Hash, 클러스터링, 논클러스터링)를 고려해야 하며, 복합 인덱스(Composite Index)는 언제 유용하게 사용될 수 있는지 설명해 주세요.
- 회원 관리 시스템을 설계할 때, '이메일 주소'와 '전화번호'를 저장하기 위한 데이터 타입을 선택해야 합니다. 적절한 데이터 타입과 길이를 선택하는 기준은 무엇이며, 잘못된 선택이 성능 및 저장 공간에 미치는 영향은 무엇인가요?