经过我们上次分析,数据库要有最基本的四张表,用户表,消息表,类型表,点赞表,评论表,接下来我们看着怎么设计吧

  首先我们要清楚,表设计的代码是写在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)--数据库表设计的更多相关文章

  1. 抽屉之Tornado实战(1)--分析与架构

    抽屉之Tornado实战(1)--分析与架构   项目模拟地址:http://dig.chouti.com/ 知识点应用: AJAX  用于偷偷发请求 原生ajax jQuery  ajax($.aj ...

  2. Oracle数据库表设计时的注意事项

    表是Oracle数据库中最基本的对象之一.万丈高楼从平地起,这个基础对象对于数据库来说,非常重要.因为其设计是否合理,直接跟数据库的性能相关.从Oracle数据库菜鸟到数据库专家这个过程中,在表设计与 ...

  3. Innodb IO优化 — 数据库表设计 转

    数据库表设计这块学问比较多,我这里单从互联网角度出发同时结合Innodb的特性给出一些设计方法供大家参考.本文构建大概分两分部分:Innodb的特性及设计中如何利用这种特性. Innodb特性: In ...

  4. springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目

    一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...

  5. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

  6. Tornado之抽屉实战(2)--数据库表设计

    经过我们上次分析,数据库要有最基本的四张表,用户表,消息表,类型表,点赞表,评论表,接下来我们看着怎么设计吧 首先我们要清楚,表设计的代码是写在models下的 用户表 ? 1 2 3 4 5 6 7 ...

  7. ERP开发分享 1 数据库表设计

    这是我的ERP设计经验分享系列,今天讲的是数据库的表设计(1),主要阐述: 1.单字段的主键:2.使用int32作为主键类型:3.使用版本字段处理乐观锁定:4.生效字段标明是否允许“被使用”:5.锁定 ...

  8. Acitiviti数据库表设计(学习笔记)

    ACT_ID_*:与权限,用户与用户组,以及用户与用户组关系相关的表 ACT_RU_*:代表了流程引擎运行时的库表,RU表示Runtime ACT_HI_*:HI表示History当流程完成了节点以后 ...

  9. 测试用数据库表设计和SessionFactory

    本篇为struts-2.5.2和spring-3.2.0以及hibernate-4.2.21的整合开篇. 一.测试的数据库表. 用户.角色和权限关系表.数据库是Mysql5.6.为了考虑到一些特殊数据 ...

随机推荐

  1. InstallShield:卸载时文字叠加,文字乱码

    问题: InstallShield2010打包的程序.如果程序正在运行,卸载程序,提示关闭程序,然后消息界面出现文字叠加. 定位问题: 新建Installshield项目,依次修改SetupType, ...

  2. qt在GUI显示时,将调试信息输出到控制台的设置

    1. 在.pro文件中添加一下设置: CONFIG += console 2. 项目的[构建和运行]中,需要勾选[Run in terminal]:

  3. 开发过程中遇到的问题1--------我们的mysql的查询语句时自己写的,没有用oracle的nextvalue函数。所以这里涉及到了并发的问题。

    效果http://www.cnblogs.com/wanggangblog/p/4037543.html 很多的采购单会生成.生成的时候会有订单的编号,然后一个采购单的编号是唯一的,怎么生成呢?之前o ...

  4. Spark学习笔记——读写MySQL

    1.使用Spark读取MySQL中某个表中的信息 build.sbt文件 name := "spark-hbase" version := "1.0" scal ...

  5. ABBYY FineReader 12使用教程

    说到OCR图文识别软件,自然少不了ABBYY FineReader 12.ABBYY FineReader 12可快速方便地将扫描纸质文档.PDF文件和数码相机的图像转换成可编辑.可搜索的文本.我们已 ...

  6. [OpenCV] Samples 18: Load image and check its attributes

    本篇内容: * 图片读取 * 图片高宽 * 图片ROI * 图片缩放 Ref: http://blog.csdn.net/u012005313/article/details/51943442 官网2 ...

  7. SpringBoot Druid整合,SpringBoot 集成Druid

    SpringBoot Druid整合,SpringBoot 集成Druid ================================ ©Copyright 蕃薯耀 2018年4月8日 http ...

  8. Possible causes are invalid address of the remote server or browser start-up failure.

    appium 脚本运行不起来 Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:4723 [ ...

  9. error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2

    使用VS2013版本引用外部的lib进行编译时候提示: 错误 25 error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:  值“0”不匹配值“2”(jrtpl ...

  10. 关于JSON call 的一个小问题

    如图当我们在做Json call 的时候,一定要切记,建立的model 一定要与JSON 字符串严格的一一对应,否者会解析不出来