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

임승경님의 프로필 이미지
임승경

작성한 질문수

데이터베이스 중급(Modeling)

1:M 재귀적 관계

json 구조의 데이터를 저장할 때 재귀 관계가 맞는 방법인지 궁금합니다.

작성

·

339

·

수정됨

0

선생님 안녕하세요. 테이블 설계 중 고민 중인 부분이 있어 강의 복습하다가 의견을 여쭙고자 질문드립니다.

제가 하려는 것은

json 구조로 내려오는 데이터를 key, value 모두 각각 저장하려고 합니다.

구조를 예를 들면,

{

"resReferenceList": [

{

"resTriglyceride": "mg/dL",

"resALT": "U/L",

"resType": "단위",

"resSight": ""

},

{

"resTriglyceride": "150미만",

"resALT": "35이하",

"resType": "정상(A)",

"resSight": ""

}

],

"resResultList": [

{

"resQuestionInfo": "",

"resInfantsCheckupList": [

 

],

"resQuestionInfoList": [

{

"resSmokingList": [

{

"resPeriod": "",

"resType": "일반담배(궐련)"

},

{

"resPeriod": "",

"resType": "궐련형 전자담배",

"resPeriod1": ""

}

],

"resApplicableYN1": "0",

"resSmokingStatus": "0",

"resDiseaseHistoryList": [

{

"resApplicableYN": "0",

"resType": "0",

"resDisease": "뇌졸중(중풍)"

},

{

"resApplicableYN": "0",

"resType": "0",

"resDisease": "심장병(심근경색/협심증)"

}

],

"resApplicableYN": "0",

"resAlcoholAmtList": [

{

"resUnit": "병",

"resNumber": "0.5",

"resType": "평균",

"resType1": "소주"

}

]

}

],

"resOriGinalData": "",

"resInfantsDentalList": [

 

]

},

{

"resQuestionInfo": "",

"resInfantsCheckupList": [

 

],

"resOriGinalData": "",

"resInfantsDentalList": [

 

]

}

],

"resCheckupTarget": "홍길동"

}

 

(json 구조가 잘 보이게 하고 싶은데 붙여넣기 하면 계속 이렇게 되네요ㅠ죄송합니다.)

이렇게 Object 형태에 List 형태도 포함되어 있습니다.

그런데 좀 더 까다로운게 위의 Object 가 [] List 에 담겨 여러개 나오는 경우도 있습니다. (이거까지 생각하면 복잡해서 일단 위 구조만 고려했습니다.)

이러한 형태가 계속해서 테이블에 쌓이게 하려고 합니다.

우선 트리 구조라고 생각했기 때문에 재귀 관계 테이블을 떠올려서 그렇게 작업을 하려고 했는데요.

-Id (pk, auto increment)

-부모테이블Id (fk, 위 데이터의 부모격인 메인 테이블이 있습니다. (1:M 관계))

-상위Id(id 와 fk 관계, 재귀)

-리스트 번호(Obejct 가 리스트로 같은 상위 id 에 포함될 수 있는데, 그러면 각 Object 묶음이 구분이 되어야 하므로 구분하기 위한 번호)

-key_name

-value

이렇게 생각을 했는데 조회시 상당히 불편해서 다른 방법이 있을지 고민되어 질문드리게 되었습니다.

단순히 데이터를 쌓고 통계를 위한 조회 정도로 사용할 예정입니다.

위와 같은 데이터 구조의 key, value 를 모두 저장해야 할 때 재귀 관계를 사용하는게 최선인지 아니면 다른 고민해볼 포인트도 있는지 의견 여쭙고 싶습니다.

감사합니다.

답변 2

0

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

안녕하세요. 재귀구성은 현재 노드에서상급노드 조회 또는 하위노드들을 조회하는 경우에만 사용합니다. 단순 노드의 컬럼들을 대상으로 조회할 때는 필요가 없습니다

재귀와 관련된 쿼리는 현재노드의 식별자를 가지고 부모를 찾던 자식을 찾는 것이기 때문에 그리 어려울것은 없습니다.

0

안녕하세요, 인프런 AI 인턴이에요.
제가 이해한 바로는, 데이터를 JSON 구조로 저장하고 싶으신 것 같은데, 그 중 고민 중인 부분은 재귀 관계인 것 같아요.
JSON 구조에서 재귀 관계는 가능합니다. 예를 들어, 하위 항목에 다시 하위 항목이 있거나, 배열 내부에 다시 배열이 있다면, 재귀적으로 구성할 수 있어요.
주어진 예시에서도 “resReferenceList”와 “resResultList”라는 항목이 배열로 구성되어 있고, 배열 내부에는 또 다른 JSON 구조가 포함되어 있으니, 재귀 관계로 구현하셔도 괜찮을 것 같아요.
JSON 구조를 사용하여 데이터를 저장하고 관리하는 것은 흔한 방법인데요, 보다 상세한 설계나 처리 방법은 구체적인 사용 목적과 프로그래밍 언어에 따라 달라질 수 있습니다.
더 자세한 정보를 원하신다면, 프로그래밍 언어별 JSON 라이브러리 또는 해당 언어의 공식 문서를 참고하는 것이 좋을 것 같아요.
추가적인 도움이 필요하시면 언제든지 물어보세요. 좋은 결과가 있기를 바라요!

임승경님의 프로필 이미지
임승경

작성한 질문수

질문하기