<목차>
01. 빅데이터의 이해
빅데이터의 정의와 출현 배경, 기능을 학습하고 빅데이터가 가져오는 변화 이해하기
1) 빅데이터의 이해
2) 빅데이터 출현 배경
3) 빅데이터 기능과 변화
데이터의 가치와 미래
빅데이터의 가치와 정부, 개인 등에 미치는 영향을 살펴보고 위기 요인과 통제 방안
1) 빅데이터의 가치와 영향
2) 비즈니스 모델
3) 빅데이터의 위기 요인과 통제 방안
4) 미래의 빅데이터
가치 창조를 위한 데이터 사이언스와 전략 인사이트
빅데이터 열풍 속에서 가치 기반 분석이 가지는 의미, 중요성
1) 빅데이터 분석과 전략 인사이트
2) 전략 인사이트 도출을 위한 필요 역량
3) 빅데이터 그리고 데이터 사이언스의 미래
-빅데이터의 새로운 특징 4V: 더그 래니의 3V에 하나의 V를 더한 것. Value(가치) 또는 Veracity(정확성) / 여기에 Visualization(시각화), Variability(가변성)등을 추가하는 견해도 있음.

빅데이터는 '산업혁명의 석탄'이자 '21세기의 원유', '현미경의 렌즈', '플랫폼'
과거에서 현재로의 변화가 중요. 현재는 사후처리(데이터를 일단 모음), 전수조사, 질보다 양, 상관관계 위주로 따짐(for 신속한 의사결정)
빅데이터 가치 산정이 어려운 이유 3가지: 데이터 활용 방식(데이터 재사용, 재조합), 새로운 가치 창출(기존에 없던 가치를 창출함에 따라 산정이 어려움), 분석 기술의 발전(지금은 가치가 없더라도 나중에는 재료가 될 수 있음)
데이터 마스킹, 가명처리, 총계처리, 데이터값 삭제, 데이터 범주화
=>데이터 속에서 특정 개인을 식별할 수 있는 요인을 숨김으로써 개인을 알아볼 수 없도록 하는 기술
☑️ 빅데이터 열풍과 회의론: 과거 CRM의 부정적 학습효과, 과대 포장 (꼭 필요한가?)
Q: 어떻게 접근하는 것이 좋을까?
☑️ 빅데이터 분석, ‘Big’이 아닌 ‘인사이트’
-빅데이터는 크기가 중요한 게 아니라 분석이 중요. 의미있는 정보를 얻을 수 있는가?
-단순한 분석에서 끝나서는 안된다. 전략적 통찰력을 가지고 핵심적 비즈니스에 집중해야 한다.
Q: 일차원적인 분석은 어떤 면에서 한계가 있는가? 업계 내부의 문제에만 포커스를 두기 때문에, 비즈니스 성공에서 핵심적인 역할을 기대하기 어렵다.
-통계학이 정형화된 실험 데이터를 분석 대상으로 하는 것에 비해, 데이터 사이언스는 정형 또는 비정형을 막론함.
-데이터 사이언티스트는 비즈니스에서 핵심요소를 짚어낼 수 있어야 함. 소통 역량 중요.
데이터 사이언스의 핵심 구성요소: Analatics(분석적 영역), IT(Data Management), 비즈니스 분석(커뮤니케이션, 스토리텔링, 시각화)
하드 스킬과 소프트 스킬

*데이터 사이언스에서는 인문학적 사고 역시 중요하다.
가치 패러다임=>경제와 산업의 원천에 있는 가치에 대한 패러다임.
3단계 변화: 디지털화->연결->에이전시
이젠 테이블이 2개입니다
오늘은 어제 아티클 스터디에서 읽은 '가독성 좋은 코드를 작성하는 습관'을 최대한 상기하면서 답안을 작성하려 노력하였다.
<오늘 가장 고민했던 부분>
SELECT d.name,
COUNT(e.id) AS employee_count
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id
GROUP BY d.id;
전에 SELECT 절에 언급되지 않으면 GROUP BY를 쓸 수 없다고 한 것 같은데, 왜 SELECT d.name (중략) GROUP BY d.id인가가 너무 궁금했다. d.name으로 통일하거나, d.id로 통일하면 안 되는 걸까?
우선 d.id와 d.name은 1:1 관계로, d.name은 d.id에 종속된다.
그렇다면 왜 GROUP BY d.id인가?
id는 기본키(PK) 이므로 유일하고, 그룹의 기준으로 안정적이다.
기본키(PK)가 있는 테이블에서는 GROUP BY에 PK만 써도 대개 충분하다고 한다.
Q: SELECT d.id는 안 되나?
A: 되지만, 가독성 떨어짐. 아래는 SELECT d.id를 했을 때의 결과다.
id만 보고는 부서명을 알 수 없으니, 칼럼은 d.name을 선택하는 것이 합리적이다.
| d.id | employee_count |
|---|---|
| 101 | 2 |
| 102 | 1 |
| 103 | 1 |
Q: 그럼 고민할 것 없이 둘 다 불러오는 건 어떨까?
SELECT d.id, d.name, COUNT(e.id) AS employee_count
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id
GROUP BY d.id;
d.id, d.name 둘 다 불러오면 다음과 같은 결과가 나온다. 연산 시간이 오래걸리려나 하는 생각도 들었지만, 보기 좋다는 느낌이 들었다.
| d.id | d.name | employee_count |
|---|---|---|
| 101 | 인사팀 | 2 |
| 102 | 마케팅팀 | 1 |
| 103 | 기술팀 | 1 |
오늘 처음 들었는데 매우 중요한 개념이라 생각해서 추가 학습을 진행했다.
테이블 내에서 각 행(row)을 식별하거나, 테이블 간 관계를 만드는 기준이 되는 컬럼(또는 컬럼 집합)
즉, 키는 누가 누구인지 정확히 구별하기 위한 식별자 & 두 테이블을 연결하는 고리
| 키 종류 | 설명 | 예시 |
|---|---|---|
| Primary Key (기본 키) | 테이블 내에서 각 행을 유일하게 식별하는 컬럼 | 주민등록번호, 사번, 학번 등 |
| Foreign Key (외래 키) | 다른 테이블의 기본키를 참조하는 컬럼 | 직원 테이블의 department_id → 부서 테이블의 id |
| Candidate Key (후보 키) | 기본키로 쓸 수 있는 후보군. 유일성과 최소성을 만족 | 주민번호, 이메일, 휴대폰 번호 |
| Composite Key (복합 키) | 여러 컬럼을 묶어서 하나의 기본 키로 사용 | (학번, 과목코드) 같이 2개 조합 |
| Unique Key (유니크 키) | 중복을 허용하지 않는 키 (기본키와 비슷하지만 NULL 허용 가능) | 이메일 주소, 아이디 등 |
| 역할 | 설명 |
|---|---|
| 기본키(PK) | "이 행은 누구인가?" 식별 기준 |
| 외래키(FK) | "이 행은 다른 테이블의 어떤 행과 연결되는가?" |
| 유니크키 | "이 값은 중복되면 안 돼!" → 로그인용 아이디 등 |
| 후보키 | "기본키로 써도 될 만한 것들" |
키는 중복 데이터를 방지 하고, 빠르고 정확한 검색을 가능하게 한다.
또 JOIN 문법을 사용하는 데에도 중요하다고 한다.
강의에서 배운 JOIN은 INNER JOIN, LEFT JOIN뿐이었는데 그 밖에도 다양한 JOIN의 종류가 있는 걸 알았다. 다만 MySQL에서 지원하지 않는 JOIN 문법(FULL OUTER JOIN)도 있으니 사용에 유의해야 한다.
| JOIN 종류 | 설명 | 공통 문법 |
|---|---|---|
| INNER JOIN | 두 테이블 모두에서 일치하는 데이터만 조회 | ... FROM A INNER JOIN B ON A.id = B.a_id |
| LEFT JOIN (또는 LEFT OUTER JOIN) | 왼쪽 테이블 A의 모든 행 + 일치하는 B | ... FROM A LEFT JOIN B ON A.id = B.a_id |
| RIGHT JOIN (또는 RIGHT OUTER JOIN) | 오른쪽 테이블 B의 모든 행 + 일치하는 A | ... FROM A RIGHT JOIN B ON A.id = B.a_id |
| CROSS JOIN | 모든 행의 카테시안 곱 (A×B 전부 조합) | ... FROM A CROSS JOIN B |
| SELF JOIN | 같은 테이블을 자기 자신과 조인 | ... FROM A a1 JOIN A a2 ON a1.id = a2.manager_id |
Q: 나머지는 이해가 가는데, SELF JOIN은 대체 무엇이며 왜 필요한 걸까?
예시
SELECT e.name AS 직원, m.name AS 관리자
FROM employees e
JOIN employees m ON e.manager_id = m.id;
• 하나의 테이블을 두 개로 나눠 별명(Alias)를 붙이고 JOIN할 수 있다.
• 조직도, 계층 구현에 필요하다.