抽屉之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.为了考虑到一些特殊数据 ...
随机推荐
- GDB用法简要整理
[时间:2017-05] [状态:Open] [关键词:gdb,调试,debug,用户手册] 使用gdb是需要在编译是指定-g命令,在可执行文件中添加符号信息. 1. 启动和退出 可以使用gdb gd ...
- CentOS 上开启 BBR 加速
BBR 算法需要 Linux 4.9 及以上的内核支持,所以想要使用该方式的需要先升级内核版本. 在 Cent OS 7 上的 Linux 内核是 3.10, 使用 uname -r 查看内核版本 [ ...
- CentOS 配置集群机器之间SSH免密码登录
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远 ...
- 奇淫怪巧之在Delphi中调用不申明函数
前一阵子,研究了一段时间的Win32Asm,研究到后来发现Win32的ASM实际上还是和C版的介绍的一样.甚至还封装了一个简版的类似VCL库结构框架的32ASM结构库,不过搞着搞着就没兴趣了,也没继续 ...
- Centos 7 查看电池电量信息
而不像 ubuntu 在 /proc/acpi/battery/BAT 中. 其中 capacity 参数就是当前电脑的剩余电量的百分比信息了
- ORACLE 11.2.0.4 OCR VOTING DISK 模拟恢复场景
① 备份 ocrconfig -export 文件名 或者 ocrconfig -manualbackup 或者 找到备份 ocrconfig -local -showb ...
- Kettle能做什么?
简介 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,绿色无需安装,数据抽取高效稳定. Kettle 中文名称叫水壶,该项目的主程序员MATT ...
- akka cluster sharding
cluster sharding 的目的在于提供一个框架,方便实现 DDD,虽然我至今也没搞明白 DDD 到底适用于是什么场合,但是 cluster sharding 却是我目前在做的一个 proje ...
- 给hmailserver添加DKIM签名
上一篇说了hmailserver如何设置反垃圾邮件功能,现在来说说如何让自己的hmailserver发出去的邮件不要被别人反垃圾了.在hmailserver的反垃圾邮件功能中有提到给垃圾评分标准,其中 ...
- 修改web前端访问端口
说明: URL规则可添加变量部分,也就是说将符合同种规则的URL抽象成一个URL模式 1 2 3 @app.route('/instance/<uuid>/') def instance( ...