WebSQL中从表到自身的一对多关系

时间:2013-10-06 00:47:41

标签: mysql database-design web-sql

我正在尝试在Phonegap中创建一个应用程序并使用WebSQL创建本地数据库。我有一张名为星星的桌子......有很多演员/明星...在选择一颗星的细节时,我想向其他相关明星展示建议,比如他们的亲戚..我可以做自我加入。但这只是一对一的关系。这是我的表...

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颗星相关 - 一个兄弟和他的两个儿子 同样地选择明星(儿子) - 关系将是父亲,一个兄弟和一个叔叔....

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

1 个答案:

答案 0 :(得分:0)

这是层次结构有点问题,因为你可以在其中有漏洞,所以为了使它能够很好地工作,你必须为每个关系插入一条记录。即

明星A可以有一个兄弟和一个舅舅星星,但没有父亲。

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

关系: id INTEGER description VARCHAR(100)

stars_relations id整数 star1_id INTEGER relation_id INTEGER star2_id INTEGER

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