본문 바로가기
커리어 노트 📈/KPMG 교육

Project 기획 및 관리 (3) MySQL, 데이터베이스 정규화

by Hayley S 2024. 11. 15.

프로그래밍 연습할 수 있는 사이트 - 설치안하고 연습만 할 수 있다.

https://www.w3schools.com/sql/

 

W3Schools.com

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com


코딩 테스트 연습 사이트

https://programmers.co.kr/

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

JAVA가 제일 어렵기 때문에 자바를 한다고 하면 그 하위인 언어들은 다 할줄 안다. 파이썬을 이용해서 데이터를 주거니받거니 할 수 있어야 하고, Numpy 그리고 Pandas 까지밖에 안한다. 한번 언어를 발을 넣으면 옮기기가 쉽지는 않다. 어느 쪽에 발을 들여 놓느냐에 따라서 평생 달라진다. 전산직군에 물어보면 모두가 알거라고 생각안한다. 자기 영역만 잘한다.

RGB 픽셀 많을 수록 많이 쏘는 것이다. 왜 개발자들은 검정 어두운 화면을 쓰는 것인가? 데이터 분석가들은 이런 화면 색 조차도 생각해야한다.

 

SELECT ID, LENGTH
FROM FISH_INFO
WHERE ID NOT IN (4,5)
ORDER BY LENGTH desc, ID asc;

SELECT ID, LENGTH
FROM FISH_INFO
WHERE ID!=4 and id!=5
ORDER BY LENGTH desc, ID asc;

MySQL에서 주석처리하는 방법

NULL 값은 ASC 하면 위에 위치해있기 때문에 아래 쿼리로 써서 NULL (널) 값이 있는지 확인할 수 있다.

전체 데이터 건수 찾기
SELECT COUNT(*) FROM fish_info;

길이가 NULL값인 것 개수 찾기

SQL은 데이터를 가져오는 것은 좋지만, 엑셀처럼 계산할 수 있는 함수를 많이 제공하지는 않는다.

UNION ALL 이용해서 두가지 쿼리를 합쳐서 하나의 결과 테이블로 만들었다.

FISH_INFO 테이블에서 2021년도에 잡은 물고기 수를 출력하는 SQL 문을 작성한다.
이 때 컬럼명은 'FISH_COUNT' 로 지정한다.

날짜를 지정할 때, 1월에 30일까지 있는지, 31일까지 있는지 찾아볼 필요없이 아래와 같이 2월1일이라고 지정해도 같은 결과가 나올 수 있다.
time > = ‘2021-1-1’ and time < = ‘2021-1-31’
time > = ‘2021-1-1’ and time < ‘2021-2-1’

데이트 포맷 코딩 시험에서 많이 나온다. DATA FORMAT

프로그래밍은 쪼개 쓰는 것이다. 작은 것 먼저 쓰고, 점차 붙여나가는 식으로 해야한다.


VIEW
 - 한번 만들어놓으면 컴퓨터에 저장된다.
임시테이블 - 잠깐 뜨고 저장안된다.
수많은 테이블을 조인하고, 계속 조인하기가 쉽지 않기 때문에 VIEW 테이블에 저장한다. 마스터 테이블을 만지는 권한이 있고, VIEW 테이블 권한이 따로 있다. 임시테이블은 말그대로 잠깐 쓰다가 끄면 사라지는 것이다.

CREATE TEMPORARY TABLE temp_product_supplier AS

이 테이블이 계속 사용될 것 같다고 생각하면 임시테이블을 만들어놓고, 작업하면 훨씬 더 편하다.


카카오 AI 핀테크 토크 라이브

인공지능, 데이터분석 많이 나와도 대기업에서 수용하기가 어렵기 때문에 벤처기업들 보다 더디다.

성능을 높이면 속도가 떨어지고, 속도가 높이면 성능이 떨어진다. HPC 고성능 컴퓨터에서 자원을 할당받는 것이 VM이다. Virtual Machine 굉장히 좋은 성능 컴퓨터에서 클라우드처럼 일정량을 받아서 쓰는 것을 VM이라고 한다. 요즘 개념이 달라진 것들이 몇년 전만 하더라도 기계성능 자체가 꼭 HPC만을 써야만 하는 것들이 있었는데 그래픽카드, CPU들이 개인화 할 수 있을만큼 성능이 좋아졌다. 그래서 VM을 만들어야 하는 것은 대기업들이 하는 것이고, 중소기업들은 HPC까지는 필요하지 않아졌다. 그 이유는 성능들이 좋아졌다. 자원을 예전처럼 고성능을 사용하지 않아도 되는 추세라서 돈이 많이 안 필요해져서 작은 기업에서도 충분히 할 수 있다. 전산팀이랑 얘기해야하면 이런 얘기들을 달고 살고 일상이다. “피쳐 데이터 가지고 이상탐지 합니다.” 라던지 이런 얘기들을 하기 때문에 용어들을 알아야 한다.

이상치 탐지, 이상거래. 카드회사에서 많이 신경쓰고 있는 부분이다. 해외결제라던지. 아침에 썼던 카드가 전주에서 써서 이상거래로 인지한다. 술값을 많이 냈을 때 문자가 온다. 이상치 탐지다. 기존의 통계기법이 아니라 본인들이 만든 모델로서 이상치 탐지를 하고 있다.

다른 SQL 자바는 사용해보면 어느정도 요구사항이 있어서 하면되는데, 인공지능은 어떤 것을 넣는 것에 따라서 맞추기도 틀리기도 하다. 모델이 얼마나 잘 만들어진건지 XAI 인 것이다. 아주 중요한 이슈이다. 설명 가능한 인공지능이라는 것이다. 관련된 수학 공식이 있다. 내가 만든 모델이 이런 곳에 반응한다 라면서 사진에 표시가 된다. 이것은 XAI의 하나의 방법론이다. 만들어진게 중요한게 아니라 만든게 얼마나 좋은건지를 설명력이 제일 중요하다. 머신러닝, 딥러닝 모두 그렇다. 일반적인 통계기법들이 빅데이터, 인공지능 파트로 넘어갈 수 있음을 카카오가 얘기했다.

금융 쪽에서 무언가를 IT와 연결해서 하는 것을 빅테크라고 한다. 이슈가 금융쪽이긴 하다.

카카오 IF / 네이버 클라우드를 꾸준하게 알아주는 것이 좋다. 트렌드를 중요시 해야한다. SQL 은 기술파트라서 꾸준히 해줘야 한다. 지금 해야한다면 SQL보다는 트렌드 확인하는 것을 추천한다.


데이터베이스는 이론을 공부할 수 밖에 없다. 테이블 정규화라는 것을 할 것이다.

데이터베이스 정규화
데이터 이상현상을 방지할 수 있다. 데이터 이상현상 없이 데이터들이 문제없도록 이것을 정규화라고 한다. 정규화를 거쳐서 개체 무결성, 참조 무결성, 도메인 무결성, 무결성 규칙을 갖고자 한다. 데이터가 전체적으로 문제가 없는 것이 목적이다.

제1정규화 테이블을 완성하기
제2정규화 테이블끼리 관계 설정하기 (외래키)
제3정규화 테이블 간 이어질 수 있도록 새로운 테이블 생성하기. 다대다가 일반적인 관계이다.
제4정규화 또 테이블 생성하기, 최종이 될 때까지

LEFT / RIGHT 조인 사용해서 테이블 붙인다.
INNER JOIN 있는 자료만 나오게 하겠다.
OUTER JOIN도 해야할 때가 있다.

테이블을 쪼개는 과정을 정규화라고 한다. 정규화의 목적은 최소화하여서 다른 테이블의 내용을 참조하는 것이다. 타이핑을 하면 값을 뒤죽박죽 넣는 케이스가 발생하고, 여러번 입력해야하기 때문에 정규화가 필요하다.

필요에 의해서 테이블 생성했을 때 기본키를 기준으로 다른 테이블의 기본키를 가져오고 그게 외래키가 된다.(외래키 제약조건) 우리가 하는 것은 데이터가 중복이 되도 되는지, 고유해야하는지를 봐야한다. 그리고 다대다인지 일대다인지 알아야 한다(테이블 관계도).

참조무결성 규칙에 의해서 외래키는 다른 테이블의 기본키여야 한다.