抽屉之Tornado实战(2)--数据库表设计
经过我们上次分析,数据库要有最基本的四张表,用户表,消息表,类型表,点赞表,评论表,接下来我们看着怎么设计吧
首先我们要清楚,表设计的代码是写在models下的
用户表
#一张表对应一个类
class UserInfo(Base):
#把表名赋给静态字段
__tablename__ = 'userinfo'
#序号nid,用户名username,密码password,邮箱email,创建时间ctime
#一行数据就是一个对象
nid = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String(32))
password = Column(String(32))
email = Column(String(32))
ctime = Column(TIMESTAMP) #建立组合索引,这里是方便在登陆采用不同的登陆方式也能更好的索引数据库
#用户名+密码 和 邮箱+密码 两种组合索引
__table_args__ = (
Index('ix_user_pwd', 'username', 'password'),
Index('ix_email_pwd', 'email', 'password'),
)
信息类型表
class NewsType(Base):
__tablename__ = 'newstype'
nid = Column(Integer, primary_key=True, autoincrement=True)
caption = Column(String(32))
信息表
class News(Base):
__tablename__ = 'news'
nid = Column(Integer, primary_key=True, autoincrement=True)
#建立外键---两个
user_info_id = Column(Integer, ForeignKey("userinfo.nid"))
news_type_id = Column(Integer, ForeignKey("newstype.nid"))
ctime = Column(TIMESTAMP)
title = Column(String(32))
url = Column(String(128))
content = Column(String(150))
点赞表
class Favor(Base):
#点赞表
__tablename__ = 'favor' nid = Column(Integer, primary_key=True, autoincrement=True)
#点赞者id
user_info_id = Column(Integer, ForeignKey("userinfo.nid"))
#信息id
news_id = Column(Integer, ForeignKey("news.nid"))
ctime = Column(TIMESTAMP) #建立联合唯一索引
__table_args__ = (
UniqueConstraint('user_info_id', 'news_id', name='uix_uid_nid'),
)
评论表
class Comment(Base):
__tablename__ = 'comment'
nid = Column(Integer, primary_key=True, autoincrement=True)
#评论者id
user_info_id = Column(Integer, ForeignKey("userinfo.nid"))
#评论的信息id
news_id = Column(Integer, ForeignKey("news.nid"))
#如果为None,就是评论文章,如果是数字就是回复某个人
reply_id = Column(Integer, ForeignKey("comment.nid"), nullable=True, default=None)
#顶一下
up = Column(Integer)
#踩一下
down = Column(Integer)
#创建时间
ctime = Column(TIMESTAMP)
#发表设备:手机,电脑,苹果....
device = Column(String(32))
#发表内容
content = Column(String(150))
抽屉之Tornado实战(2)--数据库表设计的更多相关文章
- 抽屉之Tornado实战(1)--分析与架构
抽屉之Tornado实战(1)--分析与架构 项目模拟地址:http://dig.chouti.com/ 知识点应用: AJAX 用于偷偷发请求 原生ajax jQuery ajax($.aj ...
- Oracle数据库表设计时的注意事项
表是Oracle数据库中最基本的对象之一.万丈高楼从平地起,这个基础对象对于数据库来说,非常重要.因为其设计是否合理,直接跟数据库的性能相关.从Oracle数据库菜鸟到数据库专家这个过程中,在表设计与 ...
- Innodb IO优化 — 数据库表设计 转
数据库表设计这块学问比较多,我这里单从互联网角度出发同时结合Innodb的特性给出一些设计方法供大家参考.本文构建大概分两分部分:Innodb的特性及设计中如何利用这种特性. Innodb特性: In ...
- springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目
一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...
- Tornado之抽屉实战(2)--数据库表设计
经过我们上次分析,数据库要有最基本的四张表,用户表,消息表,类型表,点赞表,评论表,接下来我们看着怎么设计吧 首先我们要清楚,表设计的代码是写在models下的 用户表 ? 1 2 3 4 5 6 7 ...
- ERP开发分享 1 数据库表设计
这是我的ERP设计经验分享系列,今天讲的是数据库的表设计(1),主要阐述: 1.单字段的主键:2.使用int32作为主键类型:3.使用版本字段处理乐观锁定:4.生效字段标明是否允许“被使用”:5.锁定 ...
- Acitiviti数据库表设计(学习笔记)
ACT_ID_*:与权限,用户与用户组,以及用户与用户组关系相关的表 ACT_RU_*:代表了流程引擎运行时的库表,RU表示Runtime ACT_HI_*:HI表示History当流程完成了节点以后 ...
- 测试用数据库表设计和SessionFactory
本篇为struts-2.5.2和spring-3.2.0以及hibernate-4.2.21的整合开篇. 一.测试的数据库表. 用户.角色和权限关系表.数据库是Mysql5.6.为了考虑到一些特殊数据 ...
随机推荐
- Node入门教程(13)第十一章:mocha单元测试+should断言库+istanbul覆盖率测试+art-template
声明:以下为老马的全栈视频教程的笔记,如果需要了解详情,请直接配合视频学习.视频全部免费,视频地址:https://ke.qq.com/course/294595?tuin=1eb4a0a4 node ...
- 浅析tornado 中demo的 blog模块
#!/usr/bin/env python # # Copyright 2009 Facebook # # Licensed under the Apache License, Version 2.0 ...
- python 中的map,dict,lambda,reduce,filter
1.map(function,sequence) 对sequence 中的item依次执行function(item), 见执行结果组成一个List返回 例如: #!/usr/bin/python # ...
- 【6集iCore3_ADP触摸屏驱动讲解视频】6-2 基于FSMC总线的ARM与FPGA通信
视频简介: 该视频介绍基于FSMC总线的ARM与FPGA通信 源视频包下载地址: 链接:http://pan.baidu.com/s/1slJDoQD 密码:tmw7 银杏科技优酷视频发布区: ...
- Java编程的逻辑 (81) - 并发同步协作工具
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- laravel5.4中验证与错误提示设置
1.对于交互提交数据,验证如: #验证 $this->validate(\request(),[ 'title' => 'required|string|min:3|max:20', 'c ...
- C++/MFC-线程优先级
转载: https://blog.csdn.net/qwdpoiguw/article/details/72830426 一.线程优先级(Thread priority ) 简单的说就是(线程)的优先 ...
- Linux内核 GPIO操作部分API
内核中关于GPIO的操作API主要集中在<linux/of_gpio.h>和<linux/gpio.h>中,前者主要是GPIO直接与设备树相关的操作,在Linux 设备树操作A ...
- Excel VBA 教程
https://www.w3cschool.cn/excelvba/ Excel VBA 编程教程 https://www.yiibai.com/vba VBA教程 http://www.acc ...
- Dockerfile编写的注意事项
一.Dockerfile合理分层 Dockerfile的写法不合理,有时候会导致镜像膨胀,由于Docker是分层设计,而在Dockerfile中,每一条指令都拥有自己的context,而执行到下一条指 ...