Mysql实例 表设计
一.介绍
有一个公司叫月亮集团,他们旗下有很多网站每天都有很多人访问。于是成立了广告部,让其他公司来在他们的页面上放广告,从而收费。
二.设计表格
公司表
| 公司名称 | 公司编号(自增主键) | 电话号码 |
|---|---|---|
| A | 1001 | xx |
| B | 1002 | xx |
广告表
| 广告编号 | 有该广告的公司的编号(自增主键) | 广告收费/点击一次 |
|---|---|---|
| 1 | 1001 | 2 |
| 2 | 1001 | 3 |
| 3 | 1002 | 2 |
点击表
| 广告编号 | 该广告发送给浏览者的日期 |
|---|---|
| 1 | 101101 |
| 2 | 101102 |
| 1 | 101323 |
| 3 | 111232 |
三.查询
查都有哪些公司
直接查询公司表的 公司名称 字段
select 公司名称 from 公司表;
结果为A,B公司投放了广告
查A公司都放了哪些广告
先到公司表,将公司名称=A的编号提取出来,然后将公司编号作为条件去广告表里找广告编号。
select 广告编号 from 广告表 where 公司编号 = (select 公司编号 from 公司表 where 公司名称=A);
结果为A公司投放了编号为1,2的广告
查A公司10月份该交多少广告费
A公司10月份广告费=1广告次数 X 1广告的价格+2广告次数 X 2广告价格
先查出A公司放了哪些广告,编号多少,这个上面已经出结果了,得到编号1,2
然后根据编号查出1,2广告每次点击多少钱
select 广告费 from 广告表 where 广告编号=1;
select 广告费 from 广告表 where 广告编号=2;
根据广告编号查出10月份的1广告点击有多少次,日期为秒格式,所以找出10-11月之间的即可匹配。
select 次数 from 点击表 where 编号=1 and 浏览日期 between 100000 and 199999;
select 次数 from 点击表 where 编号=2 and 浏览日期 between 100000 and 199999;
最后做个计算即可
四.分析
表结构设置
目前有3张表,基本满足业务需求,但未来查询更多,需要重新设计主键位置,表结构。
当数据庞大,首当其冲的是点击表,可能一天有几万次记录写入,这张表将变得庞大,可以考虑将表根据月份进行拆分。
sql语句
刚才查询A公司需要交费多少,比较繁琐,需要操作多次,可以将sql语句进行优化,查看消耗时间是多少,找出最优的语句和方法。
其它功能
当前表除了基本的查询,还可以进行数据分析。
可以通过点击表,分析出当前这月哪个广告受欢迎,次数最多。这种可以去和公司商议,建议投放公司将这类广告放到更显眼位置,但费用增加。
可以通过广告表,分析出当前A公司投放多少广告,如果很多说明资金充足,可以商议价格,比如降低广告费,但要求对方投入更多广告。
Mysql实例 表设计的更多相关文章
- MySql数据表设计,索引优化,SQL优化,其他数据库
MySql数据表设计,索引优化,SQL优化,其他数据库 1.数据表设计 1.1数据类型 1.2避免空值 1.3text类型优化 2.索引优化 2.1索引分类 2.2索引优化 3.SQL优化 3.1分批 ...
- 数据库设计-Mysql数据库表设计的过程中几个关键点
一.表设计过程中应该注意的数据类型 1)更小的通常更好 控制字节长度 2)使用合适的数据类型: 如tinyint只占8个位,char(1024)与varchar(1024)的对比,char用于类似定长 ...
- MySQL库表设计小技巧
前言: 在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名.字段名命名混乱.字段类型设计混乱等等,此类数据库后续极难维护与拓展.我一直相信只有优秀的库表设计 ...
- 如何有效的跟踪线上 MySQL 实例表和权限的变更
介绍 从系统管理员或 DBA 的角度来讲, 总期望将线上的各种变更限制在一个可控的范围内, 减少一些不确定的因素. 这样做有几点好处: . 记录线上的库表变更; . 对线上的库表变更有全局的了解; . ...
- MySQL分类表设计--根据ID删除全部子类
在做数据库分类表的时候,通常会有这样的设计:一个字段是ID,另一个字段PID,PID指向自己的上级分类: 这样的设计带来的问题是:我要删除一个类,我希望它的子类全部一起删除: 在不知道分类有多少层级的 ...
- mysql大表设计以及优化
MYSQL千万级数据量的优化方法积累https://m.toutiao.com/group/6583260372269007374/?iid=6583260372269007374 MySQL 千万级 ...
- EF Code First MySql 主从表设计的一些需要注意的内容
假如有下面两张表 public class Main { public int Id{get;set;} public string Name{get;set}; public virtual ICo ...
- 四 MySQL数据库表设计
一: 设计表: user: ID, PWD, name, type archiveRecord: referdate, archiveNum, owner, user, ...
- Mysql学习总结(17)——MySQL数据库表设计优化
1.选择优化的数据类型 MySQL支持很多种不同的数据类型,并且选择正确的数据类型对于获得高性能至关重要.不管选择何种类型,下面的简单原则都会有助于做出更好的选择: (1).更小通常更好 一般来说,要 ...
随机推荐
- Python 函数 参数传递
参数传递 在 python 中,类型属于对象,变量是没有类型的: a=[1,2,3] a="Runoob" 以上代码中,[1,2,3] 是 ...
- 菜鸡的Java笔记第三 - java 自动转换原则
自动转换原则 数据范围保存大的数据类型要转换为数据范围保存小的数据类型,使用强制转换(强制转型就是在变量的前面加括号,在括号里写上需要强制要转的类型.) 数据范围保存小的数据类型可以自动转换为数据范围 ...
- [bzoj4003]城市攻占
倍增,对于每一个点计算他走到$2^i$次祖先所需要的攻击力以及最终会变成什么(一个一次函数),简单处理即可(然而这样是错的,因为他只保证了骑士的攻击力可以存,并没有保证这个一次函数的系数可以存)(其实 ...
- [bzoj1107]驾驶考试
转化题意,如果一个点k符合条件,当且仅当k能到达1和n考虑如果l和r($l<r$)符合条件,容易证明那么[l,r]的所有点都将会符合条件,因此答案是一个区间枚举答案区间[l,r],考虑如何判定答 ...
- [bzoj2257]瓶子和燃料
先考虑选出k个后答案最小会是多少,容易发现其实就是所有的gcd(就是$ax+by=gcd(a,b)$的推广)然后相当于要最大化gcd,反过来可以将所有数的约数都打上+1标记,+1标记不少于k个且最大的 ...
- vue的常用指令
https://www.bootcdn.cn/ 前端资源库 <!-- 常用内置指令 v:text : 更新元素的 textContent v-html : 更新元素的 innerHTML v-i ...
- ant的xml解释
ant必须以<project>开始和</project>结束 --project(父节点) --target(子节点) ---javac(孙节点) ---echo(孙节点)
- Java跟JavaScript两者间的关系和区别
想必很多人在刚接触和认识Java的时候,都好奇它与JavaScript之间的关系,长得这么像,难道是出自同门的升级版?嗯,他们的发明者确实颇具渊源,而且客观来说,JS确实相较Java更加简洁大众,但它 ...
- WC2021 云划水记
Day -38 - 2459208(2020.12.24) CCF 发公告了,线上举办 hopping. 刚看到还纠结了一会儿,但想想还是报了.虽说是去摸鱼,打打暴力分就走人.但毕竟有牌和没牌也是不一 ...
- 洛谷 P4707 - 重返现世(扩展 Min-Max 容斥+背包)
题面传送门 首先看到这种求形如 \(E(\max(T))\) 的期望题,可以套路地想到 Min-Max 容斥 \(\max(S)=\sum\limits_{T\subseteq S}(-1)^{|T| ...