0

我正在尝试在 Phonegap 中创建一个应用程序并使用 WebSQL 创建本地数据库。我有一张名为stars的表...有很多演员/明星...关于选择一个明星的详细信息,我想为其他相关明星(如他们的亲戚)提供建议。我可以通过Self Join来做到这一点。但这只是一对一的关系。这是我的桌子...

var sql =
    "CREATE TABLE IF NOT EXISTS stars ( "+
    "id INTEGER PRIMARY KEY AUTOINCREMENT, " +
    "firstName VARCHAR(50), " +
    "middleName VARCHAR(50), " +
    "lastName VARCHAR(50), " +
    "title VARCHAR(50), " +
    "picture VARCHAR(200))";
tx.executeSql(sql);

sql =
    "CREATE TABLE IF NOT EXISTS star_details ( "+
    "id INTEGER, " +
    "biography VARCHAR(1000), " +
    "trivia VARCHAR(1000), " +
    "birthday VARCHAR(50), " +
    "website VARCHAR(50), FOREIGN KEY(id) REFERENCES stars(id))";
tx.executeSql(sql);

sql =
    "CREATE TABLE IF NOT EXISTS recent_movies ( "+
    "id INTEGER, " +
    "recent_movie1 VARCHAR(1000), " +
    "recent_movie2 VARCHAR(1000), " +
    "recent_movie3 VARCHAR(50), FOREIGN KEY(id) REFERENCES stars(id))";
tx.executeSql(sql);

现在我正在尝试创建另一个表star_relations ...但对如何做到这一点感到困惑?

一颗星可能与 3 颗星相关联 - 一个兄弟和他的 2 个儿子 同样在选择星(儿子)时 - 关系将是父亲、1 个兄弟和一个叔叔....

所以对如何实现这一点感到困惑。

4

1 回答 1

0

这是层次结构有点问题,因为您可能在其中有漏洞,因此要使其正常工作,您必须为每个关系插入一条记录。IE

星A可以在星界有兄弟和叔叔,但不能有父亲。

因此,您可以创建一个引用表“关系”,在其中插入关系类型,然后在另一个表中交叉引用两个星和关系:

关系:id INTEGER 描述 VARCHAR(100)

stars_relations id 整数 star1_id INTEGER relationship_id INTEGER star2_id INTEGER

这可能会给你一些工作来填补关系,但我认为它可以工作。

于 2013-10-06T01:09:49.997 回答