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

本文详细介绍了广告投放系统的数据库设计,包括用户账户、推广计划、推广单元和广告创意四大部分,并阐述了各层级关系。同时,讨论了实体类的创建,如用户表、推广计划表、推广单元及其限制表、创意表等,涵盖了广告投放系统的主要模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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-data-jpa</artifactId>
        </dependency>
        &
### 图书销售商城推荐系统实现方案 #### 1. 数据收集预处理 为了构建高效的图书个性化推荐系统,需先完成数据的采集清洗工作。这一步骤涉及用户行为日志、书籍元数据以及其他外部数据源的整合[^1]。常见的数据类型包括用户的浏览记录、购买历史、评分反馈以及社交网络中的兴趣标签等。 对于图书类目繁多的情况,可以通过爬取公开API或第三方平台(如豆瓣读书)来补充书籍详情信息,例如作者简介、内容简介和分类标签[^3]。这些额外的数据有助于提升模型的学习效果并改善推荐质量。 #### 2. 推荐算法的选择 目前主流的推荐算法可分为三类:基于内容的推荐(Content-Based Filtering)、协同过滤(Collaborative Filtering),以及混合型(Hybrid Model)[^4]。 - **基于内容的推荐**主要依赖于物品特征向量之间的相似度计算。例如,通过TF-IDF提取每本书的主题关键词作为其表示形式之一;再利用余弦距离衡量两本不同作品间的关联程度。 - **协同过滤**分为两种子类别——User-based CF 和 Item-based CF 。前者侧重寻找具有相同喜好的其他顾客群体,进而推测目标个体可能感兴趣的商品列表;后者则专注于挖掘那些经常被共同选购的一组产品集合[^2]。 - **混合模型**结合上述两者优点,在某些情况下还能引入深度学习技术,比如Autoencoder或者神经网络结构来进行更复杂的表征学习过程。 #### 3. 技术栈选型 考虑到项目的技术落地能力,建议采用现代化开发工具链支持整个生命周期管理: - 后端服务可以选择轻量化微服务框架 `Spring Boot` 来搭建RESTful API接口层,并配合关系型数据库 MySQL 或者 NoSQL 解决方案 MongoDB 存储业务逻辑所需的各种实体对象及其相互间的关系定义。 - 前端展示部分可以借助现代JavaScript库 Vue.js 构建交互友好且响应迅速的操作界面,从而提高用户体验满意度水平。 以下是简单的后端控制器代码片段用于返回给定用户的推荐结果: ```java @RestController @RequestMapping("/recommendations") public class RecommendationController { @Autowired private RecommendationService recommendationService; @GetMapping("/{userId}") public ResponseEntity<List<Book>> getRecommendations(@PathVariable Long userId){ List<Book> recommendations = this.recommendationService.generateForUser(userId); return new ResponseEntity<>(recommendations, HttpStatus.OK); } } ``` #### 4. 商业化考量 除了技术层面之外,还需关注如何将此解决方案转化为实际收益来源。一方面可通过精准广告投放增加附加价值收入流;另一方面也可以探索会员订阅制模式下提供更多增值服务选项,例如专属折扣券发放机制或是定制化阅读清单推送服务等功能特性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值