풀스택웹팩개발을 목표로 db설계 부분을 수강했습니다. 체계적인 진행내용이었고요. 여러 사례들로 반복을 하면서 개념을 잡아가는 데 도움이 많이 되었습니다. 감사합니다. 필드간의 상호 연관성이 있는 경우, 즉 필드1 의 내용에 따라 필드2가, 필드2의 내용에 따라 필드 3의 선택 범위가 정해지는 것은 예전 강(ERD,MySQL워크벤치대시보드)의 내용 중에 ' bom ' 부분이 있었는데요. 이런 트리 형태 관련해서 좀더 공부를 해보려면 어느 부분을 봐야할까요?
안녕하세요 류재안 님. 드디어 과정을 모두 마치셨군요 축하드립니다. 수고 정말 많으셨습니다. 문의하신 BOM 구조는, 보통 기업들 내부 데이터베이스에 "인사조직도" 등의 형태로 심심찮게 들어가 있습니다만 외부로 제공되지는 않습니다. 그래서 구하기도 쉽지 않고요. 적절한 답변이 될는지는 모르겠으나 공공데이터 포털 등에서 제공하는 사례를 들어 말씀드리겠습니다. https://www.code.go.kr/index.do 행정표준코드관리시스템 최초 접속 화면에서, 코드검색(상단) > 기관코드검색(하단) 기관유형선택 > "입법조직" 선택 필요한 컬럼 선택 > 차수,서열,차상위기관코드,최상위기관코드,소속기관차수,대표기관코드 조회 후 약 519건 출력 > 테이블 우상단 "기관코드 조회자료" 버튼으로 다운로드 (전체 데이터는 수십만 건이라 오래 걸릴 수 있어 일부만 다운로드 받는 예제로 선택했습니다.) (개인DB에 테이블 생성 예제) -테이블명 : org_exam create or replace table org_exam ( 기관코드 varchar(100), 전체기관명 varchar(1000), 최하위기관명 varchar(100), 차수 varchar(100), 서열 varchar(100), 차상위기관코드 varchar(100), 최상위기관코드 varchar(100), 소속기관차수 varchar(100), 대표기관코드 varchar(100), 등록자 VARCHAR(100) ); "기관코드 조회자료.csv" 파일을 HEIDISQL 등의 도구를 이용해 업로드 SELECT COUNT(*) FROM org_exam ; (수행쿼리) WITH RECURSIVE tmp AS ( SELECT 기관코드, 전체기관명, 차상위기관코드, 전체기관명 AS path, 1 AS lev FROM org_exam WHERE 차상위기관코드 = '0000000' UNION ALL SELECT bs.기관코드, bs.전체기관명, bs.차상위기관코드, CONCAT(t.path,',',bs.전체기관명) AS path, t.lev+1 AS lev FROM tmp t JOIN org_exam bs ON t.기관코드=bs.차상위기관코드 ) SELECT 기관코드, CONCAT(REPEAT(' ',lev*4),전체기관명) 전체기관명, 차상위기관코드, path, lev FROM tmp ORDER BY 기관코드 ; 결과데이터를 데이터 계층 구조를 통해 조회 (결과값에 대한 데이터 확인 및 적절한 쿼리 수정 작업은 필요합니다.) -- 이와는 별개로 필드1 변경에 따른 필드2, 필드2 변경에 따른 필드3 검색 조건이 바뀌는 것은 자바스크립트, Nodejs, JAVA 등에서 해당 리스트박스에 Onload, OnChanged 이벤트 등을 등록해 해당 필드 변경 시마다 쿼리호출을 하여 데이터를 가져다 놓고 reload 해주는 방식이 일반적입니다. 데이터량이 많다면 처음부터 모든 검색 조건 데이터리스틀 가져다놓고 클라이언트 등에서 처리하는 것도 방법이긴 합니다만 이 경우 소스가 복잡해지고 UI가 무거워지는 등, 단점들이 있습니다. -- 부가적으로 제조업에서 완성품을 구성하는 부품들에 대해서도 BOM을 쓴다고는 하는데 제 경우 볼 수 있는 기회가 없어 설명이 어렵습니다. 수고하셨습니다.