我是 Android 编程的新手,我制作了一些使用 SQLite 存储用户数据的简单应用程序。现在我正在开发一个更复杂的应用程序,我需要在其中实现表之间的多对多关系。
所以基本上,我有三个相互连接的层(3 个表),但我找不到一个好的教程或任何关于如何做到这一点的文档。我花了几周时间研究这个。我也研究了领域数据库,但它对于多对多表设置来说很复杂。
那么对于初学者来说,有没有更简单的解决方案呢?或者是否有其他工具可以用来完成我的任务。任何的意见都将会有帮助。谢谢:)
最佳答案
您的示例不是多对多关系。一对多,每个国家只能存在于一个大陆,每个州只能存在于一个国家。
您可以通过添加对父类型 ID 的引用来获取所需的结构。
CREATE TABLE continent (
_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
)
CREATE TABLE country (
_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
continentId INTEGER NOT NULL,
name TEXT NOT NULL,
FOREIGN KEY continentId REFERENCES continent(_id)
)
CREATE TABLE state (
_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
countryId INTEGER NOT NULL,
name TEXT NOT NULL,
FOREIGN KEY countryId REFERENCES country(_id)
)
要选择大陆上的所有国家,只需使用正确的 ID 询问 SQL。
SELECT *
FROM country
WHERE continentId = ?
或者你可以加入他们。
SELECT *
FROM continent
JOIN country ON continent._id = country.continent
JOIN state ON country._id = state.countryId
关于android - SQLite 以外的 Android 数据库工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39927837/