除SQLite之外的Android数据库工具?

时间:2016-10-08 01:39:59

标签: android database sqlite

我是Android编程的新手,我制作了一些使用SQLite存储用户数据的简单应用程序。现在我正在研究一个更复杂的应用程序,我需要在表中实现多对多关系。 database table setup

所以基本上,我有三层(3个表)相互连接,我找不到一个好的教程或任何关于如何做的文档。我花了几周时间研究这个问题。我也查看了realm-database,但它对于多对多表设置来说很复杂。

对于初学者来说,有没有更简单的解决方案?或者是否有其他工具可以用来完成我的任务。任何的意见都将会有帮助。谢谢:))

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您可以与SQLite建立多对多的关系。对于显示的示例,您只需要一些XREF表。例如(伪代码):

Table CONTINENT(
     ContinentID 
    ,ContinentName
)

Table COUNTRY(
     CountryID
    ,CountryName
)

Table CONTINENT_COUNTRY_XREF (
     Continent_Country_XrefID
    ,ContinentID
    ,CountryID    
)

希望这有帮助。

答案 2 :(得分:0)

是的,您可以使用SAP的Ultralite数据库。它也支持连接。

这里有更多细节 http://scn.sap.com/community/developer-center/mobility-platform/blog/2012/08/23/how-to-open-an-ultralite-db-udb

答案 3 :(得分:0)

要以多对多关系连接两个表,请创建一个包含三列的第三个表。第一列只是主键的标准。其他两列是两个原始表中的二级键。谷歌搜索"多对多的关系"将提供更多细节。