我将尝试通过制作一款笔记应用程序来学习Peewee和Bottle技术。
假设我有以下实体:
如果您想要在笔记和相关的实体之间建立M:N的关系,您需要创建一个note_notable桥接表。
您需要在subject、book和chapter上设置before insert触发器,在noteable中插入一行记录,检索新行的noteable_id,并将其用于即将到来的行。
假设您正在使用像Peewee这样的ORM,您会希望在应用程序逻辑中完成这个过程而不是使用触发器。
如何在Peewee中实现这种模型?
假设我有以下实体:
Subject
Book
Chapter
Note
Tag
我希望您能够为章节、书籍和主题制作笔记,并使其易于理解。
在数据库中,您可以这样做:
create table noteable (
noteable_id INT AUTO_INCREMENT PRIMARY KEY
,type VARCHAR(10) NOT NULL CHECK (type in ('SUBJECT','BOOK','CHAPTER','NOTE'))
);
create table subject (
subject_id INT AUTO_INCREMENT PRIMARY KEY
,noteable_id INT UNIQUE REFERENCES noteable (noteable_id)
,...
);
create table book (
book_id INT AUTO_INCREMENT PRIMARY KEY
,subject_id INT NOT NULL REFERENCES subject (subject_id)
,noteable_id INT UNIQUE REFERENCES noteable (noteable_id)
,...
);
create table chapter(
chapter_id INT AUTO_INCREMENT PRIMARY KEY
,book_id INT NOT NULL REFERENCES book (book_id)
,noteable_id INT UNIQUE REFERENCES noteable(noteable_id)
,...
);
create table note(
note_id INT AUTO_INCREMENT PRIMARY KEY
,noteable_id INT UNIQUE REFERENCES noteable(noteable_id)
,...
);
如果您想要在笔记和相关的实体之间建立M:N的关系,您需要创建一个note_notable桥接表。
您需要在subject、book和chapter上设置before insert触发器,在noteable中插入一行记录,检索新行的noteable_id,并将其用于即将到来的行。
假设您正在使用像Peewee这样的ORM,您会希望在应用程序逻辑中完成这个过程而不是使用触发器。
如何在Peewee中实现这种模型?