2. 국회의원 인적사항 역대 국회의원 인적사항
국회의원 발의법률안 본회의 표결정보
어떤 데이터를
사용할 것인가
3. 목표 – 웹 페이지 시각화
감염병의 예방 및 관리에 관한 법률 일부개정법률안
공동발의자
키워드
홍길동
의원 정보
전체 법안 주요 키워드
대표발의자
홍길동
김철수, 김준석, 김광호, 노진구
<POLY-NM>활빈당</POLY-NM>
<ELECT_GBN_NM>지역구</ELECT_GBN_NM>
<TEL_NO>010-1111-2222</TEL_NO>
<SEX_GBN_NM>남</SEX_GBN_NM>
표결
해당 의원이 발의한 법안
의 키워드 빈도를 표시
12. 동명이인 정제 – 21대 공동발의자 데이터
이름에 HyperLink가 제공되어 해당 링크의 마지막 7자가 dept_cd라는 값으로 존재.
13. 동명이인 정제 – 공동발의자 데이터
이 경우, 공공데이터포털의 국회의원 상세 조회 API에서
dept_cd를 조회해 한글명과 한자명, 당명 추출해 저장.
14. 공동 발의자 동명이인 – 20대
1. 20대 법안 공동발의자 중, 동명이인을 제외한 수: 244451
2. 20대 법안 공동발의자 중, 동명이인 중, 김병욱 의원 제외한 수: 1788
3. 20대 법안 공동발의자 중, 김병욱 의원의 수: 1402
244451 + 1788 + 1402 = 247641
-> XML의 공동발의자 column을 ‘,’으로 separate하고 count하면 같은 값이 나온다.
15. 공동 발의자 동명이인 – 21대
1. 20대 법안 공동발의자 중, 동명이인을 제외한 수: 136106
2. 20대 법안 공동발의자 중, 동명이인의 수: 3094
136106 + 3094 = 139200
-> XML의 공동발의자 column을 ‘,’으로 separate하고 count하면 같은 값이 나온다.
44. 동명이인 쿼리문
SELECT *
FROM member_of_congress
WHERE HANGUL_NAME IN (
SELECT HANGUL_NAME
FROM member_of_congress
GROUP BY HANGUL_NAME
HAVING COUNT(*) >= 2
)
국회의원 정보를 미리 INSERT 한 뒤,
동명이인 유무를 확인하기 위해 다음의
Query문 사용
45. DB Insert 문제
def insert(cur, datas):
try:
cur.executemany(""“
INSERT INTO congress.bill(
BILL_ID,
BILL_NAME,
MAIN_PROPOSER,
PROC_RESULT, AGE, PROPOSED_DATE) VALUES(?, ?, (
SELECT MONA_CD
FROM congress.member_of_congress
WHERE HANGUL_NAME = ?
), ?, ?, ?)""", datas)
except mariadb.IntegrityError e:
print(e) as
executemany로 INSERT했지만 같은 값이 여러 번 들어가 실패
49. 시각화 – SQL Query
SELECT BILL_NAME, bill.BILL_ID
FROM bill, bill_morpheme
WHERE bill.BILL_ID = bill_morpheme.BILL_ID AND NNP = ?
ORDER BY FREQUENCY DESC;
키워드가 포함된 법안 목록을 빈도 수로 내림차순 정렬해 표시
50. 시각화 – SQL Query
법안 데이터와 대표 발의자 이름 가져오기
SELECT *, (
SELECT HANGUL_NAME
FROM member_of_congress
WHERE MONA_CD=bill.MAIN_PROPOSER
) AS name
FROM bill
WHERE bill.BILL_ID=?
공동 발의자 이름 목록 가져오기
SELECT (
SELECT HANGUL_NAME
FROM member_of_congress
WHERE MONA_CD = PROPOSER
) AS coname, PROPOSER
FROM proposer
WHERE BILL_ID = ?
51. 시각화 – SQL Query
국회의원 정보 가져오기
SELECT *
FROM member_of_congress
WHERE MONA_CD = ?
대표 발의 법안 목록 가져오기
SELECT BILL_NAME, BILL_ID
FROM bill
WHERE MAIN_PROPOSER = ?
52. 역할 분담
• 국회의원 INSERT
• 법안 INSERT
• 형태소 분석 데이터 INSERT
• 법안 공동 발의자 INSERT
• DB 물리 모델링
김준석
• 표결 정보 INSERT
• 국회의원 당선 대수 INSERT
• GUI 제작
• 데이터 시각화를 위한 SQL Queries
김**
• 개념 모델링
• IE 모델링
• 함수 종속 Diagram
공동 진행
53. 진행 일정
1주차 팀 결성 및 주제 선정
2주차 주제 선정
3주차 주제 선정 및 계획서 작성
4주차 개념 모델링
5주차 물리 모델링
6주차 중간고사 준비
7주차 중간고사
8주차 DB제작
9주차 중간 발표
10주차 DB 재설계 GUI제작 & IE모델링 정규화
11주차 검토
12주차 검토
13주차 프로젝트 발표자료 준비 및 검토
14주차 프로젝트 발표
54. 참고 문헌 및 사이트
• 국회의원 인적사항
• https://open.assembly.go.kr/portal/data/service/selectAPIServicePage.do/OWSSC6001134T516707
• 역대 국회의원 인적사항
• https://open.assembly.go.kr/portal/data/service/selectServicePage.do/OBL7NF0011935G18076
• 국회의원 발의법률안
• https://open.assembly.go.kr/portal/data/service/selectServicePage.do/OK7XM1000938DS17215
• 국회의원 본회의 표결정보
• https://open.assembly.go.kr/portal/data/service/selectServicePage.do/OPR1MQ000998LC12535
• Node.js 참고 자료
• https://victorydntmd.tistory.com/
• MariaDB Connector Node.js
• https://github.com/mariadb-corporation/mariadb-connector-nodejs
• Bootstrap · The most popular HTML, CSS, and JS library in the world.
• https://getbootstrap.com/