第四章 广告投放系统——数据库设计与实体类

此博客用于个人学习,来源于网上,对知识点进行一个整理。

1. SpringBoot 与 MVC:

IOC 作为 SpringBoot 的核心之一,先简单看一下它的原理。
在这里插入图片描述
更多内容可以参考这篇博客:Spring 框架学习第三节:核心理念之一 —— IoC(控制反转)

以及了解 Spring MVC 的模块解析:

在这里插入图片描述
更多内容可以参考这篇博客:Spring MVC 框架学习第一节:MVC 的基本概念和入门

2. 数据表设计:

2.1 分析系统层级关系:

先介绍一下广告投放系统的一些基本概念和一些基本功能点,也就是广告投放系统里面要做什么事情,包含什么功能。
在这里插入图片描述
首先介绍四个概念:

  • 用户账户:最高层级,用于定义广告主或代理商,只有有了用户才会有接下来的数据投放
  • 推广计划 :一类品牌或产品广告投放的规划,自身并不定义太多关于广告自身的信息,它会将信息打包下放到推广单元层级
  • 推广单元:一个确定的广告投放策略,描述了投放广告的规则信息,推广计划与推广单元是一对多的关系
    • 推广单元维度限制:推广单元一般会做一些限制级别的动作,比如:关键词限制,只有广告词带有一些关键词才会命中推广单元;地域限制,上海的居民会看到上海的商品的广告信息;兴趣限制,喜欢篮球的更多推送体育方面的广告
  • 广告创意:展示给用户看到的数据,可以是图片、文本或者一段视频,推广单元和广告创意是多对多的关系

接下来看一下四个概念的层级关系:

在这里插入图片描述

  • 最高层级是推广账户级别,只有有了用户账户,才能在我们的平台上推广计划
  • 第二层级是推广计划,一个推广计划一般是一个品牌,每个推广计划都有一些推广单元,是父子关系
  • 第三层级是推广单元,分为关键词,地域,兴趣和人群,一个推广单元也被称为维度
  • 最低层级是创意,创意也是一个单独的层级,它其实与任何一个层级相关联,同时它与推广单元是多对多的关系,每一个推广单元都可以去添加一个创意,每个创意也可以添加到推广单元上面,两者是多对多的

2.2 数据表设计:

数据表的设计与广告数据的核心要素是相对的,目的就是去表达各个要素。但是,数据表中的数据字段与类型定义是可以“自 由发挥”的,这需要与当前的具体业务进行匹配。

用户账户表:

用户账户(ad_user) 含义
username 账户名称
token 账户 token
user_status 账户状态
create_time 创建时间
update_time 更新时间

推广计划表:

推广计划(ad_plan) 含义
user_id 标记当前记录所属用户
plan_name 推广计划名称
plan_status 推广计划状态
start_date 推广计划开始时间
end_date 推广计划结束时间
create_time 创建时间
update_time 更新时间

其中,推广的有效时间为推广计划的开始时间到结束时间,如果不属于这段时间,推广单元也就没有了意义。

推广单元与维度限制表:

推广单元(ad_unit) 含义
plan_id 关联推广计划 id
unit_name 推广单元名称
unit_status 推广单元状态
position_type 广告位类型(开屏,贴片等)
budget 预算
create_time 创建时间
update_time 更新时间
关联词限制(ad_unit_keyword) 含义
unit_id 关联推广单元 id
keyword 关键词
地域限制(ad_unit_it) 含义
unit_id 关联推广单元 id
province
city
兴趣限制(ad_unit_district) 含义
unit_id 关联推广单元 id
it_tag 兴趣标签

创意、创意与推广单元关联关系表:

创意(ad_creative) 含义
name 创意名称
type 物料类型(图片,视频)
material_type 物料子类型(bmp,avi)
height 高度
width 宽度
size 物料大小,单位 KB
duration 持续时长,视频不为0
audit_status 审核状态
user_id 标记当前所属用户
url 物料地址
create_time 创建时间
update_time 更新时间
创意与推广单元关联(createive_unit) 含义
creative_id 关联创意 id
unit_id 关联推广单元 id

3. 广告投放系统模块:

在 imooc-ad-service 下,创建 module:ad-sponsor。

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- 指定父pom, 注意它是 imooc-ad-service 的子模块 -->
    <parent>
        <artifactId>imooc-ad-service</artifactId>
        <groupId>com.imooc.ad</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <!-- 当前项目/模块的坐标, groupId从父模块中继承 -->
    <artifactId>ad-sponsor</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <!-- 引入 Web 功能 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--
            Eureka 客户端, 客户端向 Eureka Server 注册的时候会提供一系列的元数据信息, 例如: 主机, 端口, 健康检查url等
            Eureka Server 接受每个客户端发送的心跳信息, 如果在某个配置的超时时间内未接收到心跳信息, 实例会被从注册列表中移除
        -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- 引入 Feign, 可以以声明的方式调用微服务 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- 引入服务容错 Hystrix 的依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <!-- 引入服务消费者 Ribbon 的依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
        <!-- Java Persistence API, ORM 规范 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-da
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值