관계형 데이터베이스 예제 - 웹서비스 사용자/세션 정보
사용자ID
세션ID
세션이 생성된 시간
채널정보
세션을 여러개 가질 수 있는 이유:
접근 수가 많다고 매출이 늘어나는 것은 아니기 때문에 마케팅에서 접근 수뿐만 아니라 매출도 봐야한다.
여러 채널을 방문해서 상품을 구매했을 때 기여도가 가장 큰 채널 구하는 방법
SQL 기본
팀프로젝트에서 테이블/필드의 명명규칙을 명확히 정해야한다. 그래야 불필요한 테이블이 늘어나지 않는다.
SQL DDL - 테이블 구조 정의 언어
postgresql 사용
CREATE TABLE
primary key는 중복되는 값이 없어야한다.
데이터 웨어하우스에는 primary key를 보장하지 않는다. 데이터가 워낙 많아 확인하기 어렵기 때문이다. (지정은 할 수 있다. → 참고로만 사용) = Primary key uniqueness를 보장하지 않는다.
CTAS: 테이블을 만들면서 바로 테이블에 내용을 추가한다. (CREATE TABLE 스키마.테이블 AS SELECT …)
DROP TABLE vs DELETE FROM
DROP TABLE: 테이블 자체를 삭제
DELETE FROM: 테이블의 레코드를 삭제 (WHERE 절을 통해 특정 레코드만 삭제 가능)
SQL DML - 테이블 데이터 조작 언어
INSERT INTO vs COPY
INSERT INTO: BULK INSERT가 불가능하다.
COPY: BULK INSERT가 가능하다.
DELETE FROM vs TRUNCATE
DELETE FROM: Transaction을 사용할 수 있다
TRUNCATE: Transaction을 사용할 수 없다
실습에 들어가기에 앞서 기억할 점
데이터를 분석하기 전에 데이터를 살펴봐야한다.
모든 테이블을 다 관리할 수 없기 때문에 데이터팀은 중요한 테이블을 골라 이해하고 잘 관리해야한다.