SQLite 数据库中的连接表

Posted

技术标签:

【中文标题】SQLite 数据库中的连接表【英文标题】:Junction table in SQLite database 【发布时间】:2017-05-10 05:13:36 【问题描述】:

嗯,我正在尝试构建一个允许在教师和学生之间交换消息的应用程序。我需要构建一个ContentProvider 类,但是我遇到了一个问题,如何表示InstructorStudent 类之间的多对多关系,这比问题更令人困惑。

我知道我需要创建一个联结表,例如:

CREATE TABLE InstructorStudent (
Student INTEGER REFERENCES Student (student_id),
Instructor INTEGER REFERENCES Instructor (instructor_id),
PRIMARY KEY (student_id, instructor_id))

但是,我有一个问题:如果我将联结表的主键设置为一个自动递增的简单整数,这是否被认为是一种不好的做法?

补充问题

如何检索特定讲师的学生列表,反之亦然?

【问题讨论】:

您在寻找 mysql、Java 还是其他东西?联结表的主键应该是student_idinstructor_id的组合。这可能不会因为您在 android 中使用 MySQL 而改变。 不,我正在使用 SQLite。很抱歉造成混淆,它应该是 SQLite 标签而不是 MySQL。 【参考方案1】:

我认为您不需要连接表的自动增量器。只要讲师 ID 和学生 ID 都是唯一的,就可以了。

如何检索特定讲师的学生列表,反之亦然?

假设你的学生表是tbl_student

这是我将如何编写查询。

select * from junctionStudentConstructor where InstructorStudent.Instructor = insid;

将 insid 替换为讲师 ID。

【讨论】:

以上是关于SQLite 数据库中的连接表的主要内容,如果未能解决你的问题,请参考以下文章

C#操作sqlite数据库表中的boolean项

sqlite怎么连接数据库文件

sqlite3 数据库创建表

移动 StorageFile 后立即在 UWP 中打开 SQLite 连接

SQLite 中的连接语句出现问题

具有不同主键值的 SQLite 连接表