springboot项目中的一个广告功能,广告包括广告名称,广告位置,广告图片,开始时间,结束时间,广告链接和广告状态,并且广告可能不止一处,请设计一个合理的数据库表,
时间: 2023-09-27 16:11:55 浏览: 85
可以设计以下几张表:
1. 广告位表(ad_position):包含广告位的信息,如广告位名称、描述、宽高等字段。
```
CREATE TABLE ad_position (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL COMMENT '广告位名称',
description VARCHAR(100) DEFAULT NULL COMMENT '广告位描述',
width INT(11) NOT NULL COMMENT '广告位宽度',
height INT(11) NOT NULL COMMENT '广告位高度',
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='广告位表';
```
2. 广告表(ad):包含广告的信息,如广告名称、广告图片、开始时间、结束时间、广告链接、广告状态等字段,同时需要记录广告所属的广告位。
```
CREATE TABLE ad (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL COMMENT '广告名称',
image_url VARCHAR(200) NOT NULL COMMENT '广告图片URL',
start_time DATETIME NOT NULL COMMENT '开始时间',
end_time DATETIME NOT NULL COMMENT '结束时间',
link_url VARCHAR(200) NOT NULL COMMENT '广告链接URL',
status TINYINT(1) NOT NULL DEFAULT 0 COMMENT '广告状态,0-禁用,1-启用',
position_id INT(11) NOT NULL COMMENT '广告位ID',
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY (position_id) REFERENCES ad_position (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='广告表';
```
3. 广告点击记录表(ad_click_record):记录广告被点击的信息,如广告ID、点击IP、点击时间等字段。
```
CREATE TABLE ad_click_record (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
ad_id INT(11) NOT NULL COMMENT '广告ID',
click_ip VARCHAR(50) NOT NULL COMMENT '点击IP',
click_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '点击时间',
FOREIGN KEY (ad_id) REFERENCES ad (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='广告点击记录表';
```
通过以上设计,可以灵活地管理广告位和广告信息,并且方便进行广告点击数据的统计分析。
阅读全文