인프런 커뮤니티 질문&답변

DWG담님의 프로필 이미지
DWG담

작성한 질문수

데이터베이스 중급(Modeling)

1:M 관계 1

PK에 임의의 식별자(정수형 시퀀스값)부여에 관한 질문드립니다.

작성

·

345

0

영상 마지막에 나온것처럼 PK에 해당하는 칼럼의 값을 프로그래머를 위해 넘겨주어야 한다고 말씀하신거처럼.

클라이언트 화면에서는 임의의 식별자 데이터는 렌더링하지는 않지만 사용자(클라이언트 프로그램)가 어떤 데이터를 요청할 때 클라이언트는 해당 데이터(레코드)에 해당하는 PK의 값을 서버에 전달. 과 같은 방식일까요?

 

질문이 조금 매끄럽지가 않은것같아 좀 더 말해보면

에로들어 도서 관리 DB의 도서(Book)테이블에 PK가 도서 번호(1,2,3,4..)이며 나머지 속성은 책 이름, 출판사 등의 속성을 가지고 있고, 책 테이블의 도서 번호를 참조한 자식 관계를 가진 대여 기록 테이블이 있을 때 사용자가 'RDBMS Modeling 기초'라는 책의 대여기록을 보고싶어서 해당 책이름을 클릭하면 내부 코드에서는 클라이언트 코드에서는 해당 책의 PK인 책번호를 서버에게 전달 후 서버는 해당 책번호를 통해 대여기록 테이블과 JOIN하여 클라이언트에 응답. 과 같은 방식이 일반적인지 궁금합니다

답변 2

0

이교준님의 프로필 이미지
이교준
지식공유자

프로그래머 입장에서는 예를 들면 BookModel(책에 관한 모델)과 BookCheckOutModel(책대여모델)이 있다고 할 때, 고객이 책을 클릭하면 BookModel이 반환되겠죠.

선택된 책을 아래와 같이 가져왔다고 가정하죠.

BookModel bm = Grid.SelectedModel() as BookModel <- 뜻 전달을 위해 그냥 만들어 봤어요

 

그러면 BookCheckModel bcm = new BookCheckModel(bm);

이렇게 BookCheckModel을 하나 만들면 그 속에 이미 책의 PK를 가지고 있겠죠.

그리고 bcm.GetById() 이런 식으로 저장함수를 호출하면 저장함수에서는

Select * from VW_BookCheckOut where ... 이렇게 뷰를 호출해서 select 문을 수행할 것이고,

 

뷰에서는

Select b.* from TB_Book a INNER JOIN TB_BookCheckOut b on a.bookid = b.bookid

이런 방법으로 리턴하게 될 겁니다.

 

저장함수가 호출되면 뷰를 호출하고 그 값을 Model Class가 받는 것을 저는 설명한 겁니다. 도움이 도시길.

0

안녕하세요 DWG담 님, 인프런 AI 인턴이에요.

말씀하신 내용은 일반적으로 사용되는 방식입니다. 클라이언트 화면에서는 식별자 데이터를 렌더링하지 않지만, 사용자가 어떤 데이터를 요청할 때 클라이언트는 해당 데이터의 식별자인 PK의 값을 서버에 전달합니다. 서버는 이 식별자를 받아 해당 데이터를 식별하고, 필요한 처리를 하여 클라이언트에게 응답합니다.

예를 들어, 도서 테이블에서 특정 책의 대여 기록을 보고 싶을 때, 클라이언트에서는 해당 책의 PK인 도서 번호를 서버에 전달합니다. 서버는 이 도서 번호를 통해 대여 기록 테이블과 JOIN하여 클라이언트에게 응답합니다.

이러한 방식을 통해 클라이언트와 서버 간의 데이터 요청과 응답을 관리할 수 있고, 데이터의 식별에 필요한 정보인 PK를 사용하여 원하는 데이터를 찾을 수 있습니다. 감사합니다!

DWG담님의 프로필 이미지
DWG담

작성한 질문수

질문하기