我的毕业设计--数据库设计之登陆注册

Posted in 2016-12-25 8:4 | Category: 生活随笔 | Tags: 毕业设计

登陆注册数据库设计

共同字段:

  • id 主键,自增ID

用户表

tablename: user
字段名 字段类型 字段描述 是否为空 是否unique 默认值
username string(20) 用户名 False True  
password string(100) 密码 False False  
email string(49) 邮箱 False True  
is_superuser bool 是否为超级管理员 False False False
is_confirmed bool 邮箱是否验证 False False False
register_time datetime 注册时间 False False UTC时间
last_login datetime 上次登陆 True False  

用户信息表

tablename: userinfo
字段名 字段类型 字段描述 是否为空 是否unique 默认值
avatar string(128) 头像路径 True False  
company string(128) 公司 True False  
website string(128) 网址 True False  
user_id integer 关联用户表外键 True True  
user   与用户信息成一对一关系      

用户设置表

tablename: usersetting
字段名 字段类型 字段描述 是否为空 是否unique 默认值
locale string(49) 语言设置 False False zh
timezone string(49) 时区设置 False False UTC
user_id integer 关联用户表外键 True True  
user   与用户设置成一对一关系      

用户token表

tablename: usertoken
字段名 字段类型 字段描述 是否为空 是否unique 默认值
token string(128) token False False  
available bool token是否有效 False False True
created_at datetime token创建时间 False False UTC时间
updated_at datetime token更新时间 False False UTC时间(自动更新)
user_id integer 关联用户表外键 True True  
user   与用户token成一对一关系      

数据库实现

用户表

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column('用户名', db.String(49), unique=True, nullable=False)
    email = db.Column('邮箱', db.String(81), unique=True, nullable=False)
    password = db.Column('密码', db.String(81), nullable=False)
    is_superuser = db.Column('是否超级管理员', db.Boolean, default=False)
    is_confirmed = db.Column('是否验证', db.Boolean, default=False)
    register_time = db.Column('注册时间', db.DateTime, default=datetime.now())
    last_login = db.Column('上次登陆', db.DateTime, nullable=True)

用户信息表

class UserInfo(db.Model):
    __tablename__ = 'userinfo'
    id = db.Column(db.Integer, primary_key=True)
    avatar = db.Column(db.String(128))
    school = db.Column(db.String(128), nullable=True)
    word = db.Column(db.Text, nullable=True)
    introduce = db.Column(db.Text, nullable=True)

    user_id = db.Column(
        db.Integer, db.ForeignKey(
            'user.id', ondelete="CASCADE"))
    user = db.relationship(
        User,
        backref=db.backref(
            "info", uselist=False, cascade='all,delete', lazy='joined'),
        uselist=False,
        lazy='joined')

用户设置表

class UserSetting(db.Model):
    LOCALE_CHINESE = 'zh'
    LOCALE_ENGLISH = 'en'
    LOCALE = (('zh', 'Chinese'), ('en', 'English'))

    TIMEZONE_UTC = 'UTC'
    TIMEZONE = [(i, i) for i in all_timezones]

    __tablename__ = 'usersetting'
    id = db.Column(db.Integer, primary_key=True)
    locale = db.Column(db.String(32), nullable=False, default=LOCALE_CHINESE)
    timezone = db.Column(db.String(32), nullable=False, default=TIMEZONE_UTC)

    user_id = db.Column(
        db.Integer, db.ForeignKey(
            'user.id', ondelete="CASCADE"))
    user = db.relationship(
        User,
        backref=db.backref(
            "setting", uselist=False, cascade='all,delete', lazy='joined'),
        uselist=False,
        lazy='joined')

用户token表

class UserToken(db.Model):
    __tablename__ = 'usertoken'
    id = db.Column(db.Integer, primary_key=True)
    token = db.Column(db.String(128), nullable=False)
    available = db.Column(db.Boolean, nullable=False, default=True)
    created_at = db.Column(
        db.DateTime, default=datetime.utcnow(), nullable=False)
    updated_at = db.Column(
        db.DateTime, default=datetime.utcnow(), onupdate=datetime.utcnow())
    user_id = db.Column(
        db.Integer, db.ForeignKey(
            'user.id', ondelete="CASCADE"))
    user = db.relationship(
        User,
        backref=db.backref(
            "token", uselist=False, cascade='all,delete', lazy='joined'),
        uselist=False,
        lazy='joined')

以后可能对表进行扩展