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))
    
  • 相关阅读:
    if...else if switch分支结构
    Code大蛇丸 腾讯微博 key
    当GridView中的一项被点中的时候显示的背景图片:android:listSelector="@drawable/choose_gridview"
    手机通讯录
    JDOM和XPATH薛谷雨
    修改myEclipse8.5的默认的工作空间
    用JoyToKey使游戏手柄变键盘或鼠标
    在Spring3中,配置DataSource的方法有五种
    Struts+spring使用随机验证码
    项目部署不到tomcat中的原因和解决方法
  • 原文地址:https://www.cnblogs.com/xinsiwei18/p/5866765.html
Copyright © 2011-2022 走看看