数据库部分之多表关系映射
前一节主要实现的是一对多的关系映射,有些时候需要我们实现的是多对多的关系表,应当如何实现呢?

8.png
比如文章和所属标签就是多对多的关系,一个标签可以对应多篇文章,而一篇文章也可以对应多个标签。
在sql语句中建立多对多关系:
create table article{
id:int primary autoincrement;#id:int型,主键,自增
title:varchar,not null #可变字符串,不可为空
}
create table tag{
id:int primary autoincrement;#id:int型,主键,自增
tagname:varchar,nitnull#tagname:可变字符串,不可为空
}
create table article_tag{
tag_id:int primary autoincrement;#id:int型,主键,自增
articel_id:int primary autoincrement;#id:int型,主键,自增
primary key('tag_id','articel_id')
foreign key "article_id" reference "article.id"
foreign key "tag_id" reference "tag.id"
}
在flask中实现数据库表的多对多设计:
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
title = db.Column(db.String(100),nullable=False)
content = db.Column(db.text,nullable=False)
class Tag(db.Model):
__tablename__ = 'tag'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
tag = db.Column(db.String,nullable=False)
article_tag = db.Table('article_tag',
db.Column('article_id',db.Integer,db.ForeignKey('article.id'),primary_key=True),
db.Column('tag_id',db.Integer,db.ForeignKey('tag.id'),primary_key=True)
)
db.create_all()
