2-3) MySQL DDL과 예제 데이터 소개

Hyoin Jeong·2022년 7월 12일

관계형 데이터베이스 예제 - 웹서비스 사용자/세션 정보

  • 사용자 ID: 보통 웹서비스에서는 등록된 사용자마다 부여하는 유일한 ID 세션 ID: 세션마다 부여되는 ID
  • 세션: 사용자의 방문을 논리적인 단위로 나눈 것
    • 사용자가 외부 링크(보통 광고)를 타고 오거나 직접 방문해서 올 경우 세션을 생성

    • 사용자가 방문 후 30분간 interaction이 없다가 뭔가를 하는 경우 새로 세션을 생성
      → 사용자는 여러개의 세션을 가질 수 있음

      → 세션의 open/close 2가지 기준 : close - 시간(30분초과시), open - 다른 세션(다른 탭)으로 똑같이 방문시) 
    • 어디서 사용? - 마케팅&광고

      목적 - 사용자가 어떻게 우리 사이트를 접속했는지 알기 위해

      구성요소 - 세션을 만들어낸 접점(경유지)를 채널이란 이름으로 기록 + 세션이 생긴 시간, 세션 ID도 기록

  • 이 정보를 기반으로 다양한 데이터 분석과 지표 설정이 가능
    • 마케팅 관련, 사용자 트래픽 관련
    • DAU, WAU, MAU등의 일주월별 Active User 차트
    • Marketing Channel Attribution 분석
      ▪ 어느 채널에 광고를 하는 것이 가장 효과적인가?

세션 예제

사용자 ID 100번: 총 3개의 세션(파란 배경)을 갖는 예제

Untitled

  • 세션 1: 구글 키워드 광고로 시작한 세션
  • 세션 2: 페이스북 광고를 통해 생긴 세션
  • 세션 3: 네이버 광고를 통해 생긴 세션

→ 마케팅은 사용자가 상품 구매한 것을 확인한 후 3개의 세션을 적당히 기여도를 분석

우리가 저장하고 싶은 데이터(세션정보)

Untitled

→ channel 테이블을 따로 분리

데이터베이스와 테이블 요약(1)

Untitled

  • id와 created 값은 생성되는 순간에 저절로 만들어지게 할 예정
  • id가 primary key, channel_id는 foreign key

테이블 필드의 중요 속성

  • PRIMARY KEY
    • 테이블에서 레코드의 유일성을 정의하는 필드: 그것이 primary key가 되어야함
      ▪ 예를 들면 사용자 테이블에서 “이메일” 혹은 주민등록번호
    • Composite primary key : primary key가 두개 혹은 그 이상의 필드로 정의되는
      경우
    • 장점 : 데이터베이스단에서 중복된 값을 갖는 레코드가 생기는 것을 방지함: primary key uniqueness constraint
  • Foreign key
    • 테이블의 특정 필드가 다른 테이블의 필드에서 오는 값을 갖는 경우
    • 필수는 X but 해주면 좋음
  • NOT NULL
    • 필드의 값이 항상 존재해야하는 경우
  • DEFAULT value
    • 필드에 값이 주어지지 않은 경우 기본값을 정의해줌
    • timestamp 타입: CURRENT_TIMESTAMP를 사용하면 현재 시간으로 설정됨

데이터베이스와 테이블 요약 (2)

Untitled

예제: channel 테이블 내용

Untitled

예제: channel table DDL

CREATE TABLE channel (
id int not null auto_increment primary key,
channel varchar(32) not null
);
CREATE TABLE channel (
id int not null auto_increment,
channel varchar(32) not null,
primary key(id)
);

같은 내용이지만 오른쪽처럼 적어줘야 Composite primary key 처리가 가능함

→ primary key를 항상 맨 아래에 적자

예제: session 테이블 내용

Untitled

예제: session DDL

CREATE TABLE session (
id int not null auto_increment primary key,
user_id int not null,
created timestamp not null default current_timestamp,
channel_id int not null,
foreign key(channel_id) references channel(id)
);
CREATE TABLE channel (
id int auto_increment primary
key,
channel varchar(32) not null
);

foreign key 설정 방법 : 빨간 형광펜 친 부분

0개의 댓글