게시글
질문&답변
2024.02.27
[스토리 그 자체, 실적 테이블](9:51)max_recursive_iterations
안녕하세요 류재안 님. 강좌 생성 시 사용한 DB와 버전이 MariaDB 10.x이상이라 MySQL8.x과 다른 설정값을 가지고 있습니다. 앞서 인프런 AI 인턴님의 답변과 같이 cte_max_recursion_depth 값을 조정하여 사용할 수 있습니다. SHOW VARIABLES LIKE 'cte_max_recursion_depth'; 기본값은 1000 이므로 교안과 같이 100000 으로 변경하여 사용하시면 됩니다. 참고로, 인스톨하는 버전에 따라서 제공되는 시스템변수들은 업그레이드 내용에 따라 충분히 변할 수 있습니다. 하지만 해당 경우는 MariaDB와 MySQL이 서로 다른 길을(제품군) 가고 있는데서 발생한 이종 DB 제품 간 시스템 변수명 차이 입니다. 이러한 부분은 두 DB가 뿌리가 같지만 완전히 다른 것도, 또 똑같은 것도 아니라 뭐라 정확한 설명을 드리기가 쉽지 않습니다. 같은 목적과 용도인데 제품이 달라 발생하는 문제가 아닐까 합니다. (향후 일부 강좌들에서는 MySQL8.x 기반 + 워크벤치를 개발환경으로써 고려 중입니다.)
- 1
- 2
- 133
질문&답변
2024.02.27
urlcodemap 쿼리 파일 확인요청
말씀하신 해당 파일에 대한 정보를 링크로 남깁니다. 다운로드하거나 복사 및 붙여 넣기를 통해 수행하시면 테이블과 해당 데이터가 생성 및 입력됩니다. https://drive.google.com/file/d/1kkYR7c_xZWpHKQ0TCSJRKyajK0qCrK5j/view?usp=sharing 감사합니다.
- 1
- 2
- 85
질문&답변
2024.02.27
[공유][대사와 액션, 회차정보테이블]contents2 생성관련
안녕하세요 류재안 님 우선 제가 강좌를 만든 DB가 MariaDB 10.x이상이라 MySQL8.x에서 곧바로 적용하면 가끔 말씀하신 류와 같은 오류들이 발생합니다. MySQL8.x에서 GROUP_CONCAT 함수에 사용된 문자열 컬럼값의 크기가 1024를 넘어가면 오류를 발생합니다. 언급하신 바와 같이 크기 조정 후 작업이 정상처리됩니다. 변경 전에 확인을 하면 1024로 잡혀 있음을 알 수 있습니다. show variables like '%group_concat_max_len%'; 해결방안 올려주신 점 감사드립니다. (그런데 인프런 AI인턴 사우가 제 답변보다 더 섬세하고 정확해 보입니다. 😀 참고하시면 보다 도움 되실 듯합니다.)
- 1
- 2
- 116
질문&답변
2024.02.23
[주인공과 등장인물의 집합채, 웹소설정보테이블]작가명 생성관련
충분히 의미 있는 데이터 가공이라고 생각합니다. 현재 데이터들 조건이 일부 맞지 않지만 아래의 쿼리로 구현해 보았습니다. -- 중복된 레코드들 중 한 건만 남기고 삭제 DELETE FROM kidset WHERE (kid, meaning) IN ( SELECT kid, meaning FROM ( SELECT kid, meaning, ROW_NUMBER() OVER (PARTITION BY kid ORDER BY meaning) AS row_number_ FROM kidset ) a WHERE a.row_number_ != 1 ); -- 중복된 레코드들 중 한 건만 남기고 삭제 DELETE FROM eidset WHERE (eid, meaning) IN ( SELECT eid, meaning FROM ( SELECT eid, meaning, ROW_NUMBER() OVER (PARTITION BY eid ORDER BY meaning) AS row_number_ FROM eidset ) a WHERE a.row_number_ != 1 ); -- 작가명, 회원아이디 컬럼에 각각 중복되지 않은 유일한 값들로 조회 -- 동시에 seq 컬럼에 시퀀스값을 생성하여 임시테이블 nm 생성 SET @rownum :=0; SET @rownum1:=0; SET @rownum2:=0; CREATE OR REPLACE TABLE nm AS WITH a AS ( SELECT @rownum1:=@rownum1+1 AS num, CONCAT('*',kid) AS idset FROM kidset ), b AS ( SELECT @rownum2:=@rownum2+1 AS num, CONCAT(eid,'*') AS idset FROM eidset ) SELECT @rownum:=@rownum+1 AS seq, a.idset AS 작가명, b.idset AS 회원아이디 FROM a, b WHERE b.num = a.num ORDER BY a.idset, b.idset ; -- 검증(0건 정상) SELECT 작가명,COUNT(*) FROM nm group BY 작가명 HAVING COUNT(*)>1 ; -- 검증(0건 정상) SELECT 회원아이디,COUNT(*) FROM nm group BY 회원아이디 HAVING COUNT(*)>1 ; -- 작가명 유일한 값, 회원아이디 유일한 값으로 wn_novel 테이블 해당 컬럼 UPDATE UPDATE wn_novel a INNER JOIN nm ON a.`작품번호` = nm.seq SET a.`작가명` = nm.`작가명`, a.`회원아이디` = nm.`회원아이디` ; 문제는 wn_novel 테이블은 총 1,002 건인데 반해 eidset 테이블은(회원아이디) 329 건(유일한 값) 밖에 되지 않아 유일한 값을 넣을 수가 없습니다. kidset 테이블은(작가명) 1,372 건(유일한 값)이므로 충분히 유일한 값 입력이 가능합니다. eidset 테이블의 eid 컬럼값이 유일하도록 1,002 건 이상 데이터 추가 후 위의 쿼리들을 수행한다면 정상 처리될 것으로 여겨집니다. ● 개인 사정으로 24~26일(다음 주 월요일)까지 자리를 비웁니다. 질문 남겨주시면 차주 화요일 이후로 꼭 답변드리도록 하겠습니다. 양해부탁드립니다 감사합니다.
- 1
- 1
- 84
질문&답변
2024.02.23
[주인공과 등장인물의 집합체,웹소설정보테이블]wn_novel테이블 생성
해당 부분이 생략된 채 pdf 문서화되어 있었습니다. 첨부 파일을 업데이트해놓았습니다. 강좌 "주인공과 등장인물의 집합체, 웸 소설 정보 테이블" 의 교안, "03-2 DATA 생성-웹소설 정보. pdf" 파일을 다시 다운로드하십시오. 체크 감사드립니다.
- 1
- 1
- 70
질문&답변
2024.02.23
[ERD로 보는 스토리와 테이블이라는 등장인물]태그정보 테이블 설계관련
안녕하세요 류재안님. 1. 웹소설별태그실적 테이블을 새로 하나 만드는 것을 권장합니다. 표현하자면 , "태그정보(참조)- 웹소설별태그실적(실적) -웹소설정보(마스터)" 이겠네요. 웹소설별태그실적 테이블은 태그정보와 웹소설정보 각각의 PK를 복합키로 가진 테이블이 되겠죠.(작품번호+tgcd) 위의 테이블 3개 모두 만들고 운영해야 하는 테이블입니다. 2.연재요일 테이블의 경우, 언급하신 것처럼 코드/요일 정보를 가진 테이블 을 새로 만들어 작품번호+요일코드 형태로 복합키를 생성해도 상관없습니다. 다만 태그 정보와는 달리 '요일'이라는 정보는 일~토까지 더 이상 늘어나지 않는 상식적이고 제한적인 값을 가지고 있으므로 코드값을 부여하지 않고 그대로 쓰거나, 혹은 코드값을 쓰더라도 테이블이 아닌 데이터 수준에서 월(MO),화(TU),수(WE) 등과 같이 값 자체를 하나의 규칙처럼 정의해 쓰기도 합니다 .(테이블이 없어도 명세서에 기재된 데이터 정의 내용을 바탕으로) 참고로, 대용량데이터를 다루는 데이터웨어하우스의 경우 코드값이 따로 정의되어 있더라도 성능의 문제로 인해 코드와 값 모두를 실적테이블에 함께 저장해 놓는 경우도 종종 있습니다.(조인해 가져오기보다는 그대로 출력해 보여주는 것이 더 빠르기 때문이며, 코드테이블에 수정이 일어나지 않는다는 전제 조건도 있어야합니다만.)
- 1
- 1
- 77
질문&답변
2024.02.20
[공유][워크밴치사용관련]한글깨짐
매우 유용한 워크벤치 활용 Tip입니다. 실제로 워크벤치 유저들이 ERD를 활용할 때 가장 불편해하는 점들 중 하나가 바로 '한글화' 부분입니다. 개발사에서 관심을 더 가져주었으면 좋겠네요. ( 저 역시 강좌를 만들면서 '나눔 고딕 12'로 모든 폰트를 변경해 놓고 작업했습니다만 그래도 깨지는 부분은 깨져 보이더라고요. ) 글 남겨주셔서 감사드립니다.
- 1
- 1
- 88
질문&답변
2024.02.18
[가상데이터 생성]
안녕하세요 류재안 님. 우선 제가 사용하는 MariaDB서버 버전을 알려드리면 10.6 및 11.x 입니다. 혹시 버전 문제 소지가 있을 수 있어 말씀드립니다. 요청하신 쿼리는 다음과 같습니다. DELETE FROM sc_payment WHERE (usr_phnumber, DATE_FORMAT(pay_dt,'%Y-%m-%d %H')) IN ( SELECT usr_phnumber, pay_dt FROM ( SELECT usr_phnumber,DATE_FORMAT(pay_dt,'%Y-%m-%d %H') AS pay_dt ,ROW_NUMBER() OVER (PARTITION BY usr_phnumber ORDER BY usr_phnumber,DATE_FORMAT(pay_dt,'%Y-%m-%d %H') DESC) AS row_number_ FROM sc_payment ) a WHERE a.row_number_ != 1 ); 위의 쿼리는 년-월-일-시 까지만 보았을 때 하루동안 중복된 건들을 처리합니다. 초 단위까지 하시려면 DATE_FORMAT의 시간형식 포맷을 초 단위까지 적절히 기재해 주시면 됩니다. 수행 내용은 동일한 전화번호에 대해 하루 동안 마지막 건수만 남기고 나머지를 삭제 하는 쿼리입니다. 유사한 내용이 채널에 있어 URL을 남깁니다. https://www.youtube.com/watch?v=tqClIDsoa3U&t=50s
- 1
- 1
- 68
질문&답변
2024.02.17
[관계선 안쪽 작도의 의미](1:22) titles 테이블 작성관련
안녕하세요 반갑습니다 류재안 님. 결론부터 말씀드리면, 동일하든 다르든 상관없습니다.(맞추어 주지 않아도 됩니다) 물리적으로는 ForeignKeys탭에(이하 F탭) 명시된 이름들을 활용해 객체가 생성되기 때문입니다. MySQL워크벤치 ERD 화면에서 하단의 Indexes탭에(이하 I탭) ' fk_' 로 표시되는 인덱스들은 PK 혹은 직접 유저가 생성한 인덱스가 아니라면 다소 상징적인 면이 있습니다. ' 외래 키를 생성하면 반드시 인덱스가 생성된다 '라는 사실을 알려주는 정도라고 생각하시면 됩니다. 따라서 나중에 Forward Engineer 등의 기능을 통해(ERD->테이블생성) 실제 물리적인 테이블 객체를 생성하고 나면, ERD 하단에 보이는 탭들 중 F탭에 정의된 내용으로 ForeignKey가 생성됩니다 . I탭에 정의된 FK명은 나타나지 않습니다.(워크벤치에 숨겨진 또 다른 설정이 있다면 모르지만요) (테이블 생성 스크립트 실례) CREATE TABLE titles ( emp_no varchar(8) NOT NULL, title varchar(50) NOT NULL, from_date date NOT NULL, to_date date DEFAULT NULL, PRIMARY KEY (`emp_no`,`title`,`from_date`), CONSTRAINT emp_no1 FOREIGN KEY (`emp_no`) REFERENCES employees (`emp_no`) ON DELETE NO ACTION ON UPDATE NO ACTION );
- 1
- 1
- 64
질문&답변
2024.02.14
[실습 데이터베이스,유저생성] forward engineer 사용관련
반갑습니다 류재안 님. 지적해 주신 부분은('Export User Objects') 상황 상 0건이 정상입니다. 즉, 캡처해 올려주신 류재안 님의 화면이 정상입니다. 강좌 영상의 경우, 녹화 당시 테스트/사전 작업 등을 위해 생성했던 MySQL 유저 하나가 있었나 봅니다. 삭제한 후 영상 녹화가 진행된 줄 알았는데 미처 지워지지 않은 것이 남아 발생한 오류가 맞습니다. 강좌는 해당 부분 없이(체크 해제된 상태) 그대로 진행하셔도 아무런 문제 없습니다. 참고로 Export User Objects에 건수가 체크된 경우를 이미지로 남깁니다. (사진) 체크해주셔서 감사합니다.
- 1
- 1
- 104