zoukankan      html  css  js  c++  java
  • 抽屉之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))
    
  • 相关阅读:
    CentOS安装系统时硬盘分区建议
    Linux下的gpt分区
    如何解决Win10账户没有了管理员权限
    redis数据的清空以及回滚
    禅道的作用以及安装
    Java数组的内存图
    Java中的内存划分
    进制
    Java数组
    Java方法的重载(Overload)
  • 原文地址:https://www.cnblogs.com/xinsiwei18/p/5866765.html
Copyright © 2011-2022 走看看