我正在尝试在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颗星相关 - 一个兄弟和他的两个儿子 同样地选择明星(儿子) - 关系将是父亲,一个兄弟和一个叔叔....
对如何实现这一点感到困惑。
答案 0 :(得分:0)
这是层次结构有点问题,因为你可以在其中有漏洞,所以为了使它能够很好地工作,你必须为每个关系插入一条记录。即
明星A可以有一个兄弟和一个舅舅星星,但没有父亲。因此,您可以创建一个引用表“relations”,您可以在其中插入关系类型,然后使用不同的表来交叉引用两个星和关系:
关系: id INTEGER description VARCHAR(100)
stars_relations id整数 star1_id INTEGER relation_id INTEGER star2_id INTEGER
这可能会给你一点工作来填补关系,但我认为它可以起作用。