2013-10-06 2 views
0

Phonegap에서 응용 프로그램을 만들고 로컬 데이터베이스를 만들기 위해 WebSQL을 사용하려고합니다. 나는 별이라고 불리는 테이블을 가지고 있습니다 ... 많은 배우/별이 있습니다 ... 한 별의 세부 사항을 선택하는 데, 친척과 같은 다른 관련 별에 대한 제안을 보여주고 싶습니다. 자체 결합으로 할 수 있습니다. 그러나 이것은 일대일 관계 일뿐입니다. 여기 내 테이블이 ...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

이 계층 구조는 약간의 문제가 있습니다. 왜냐하면 계층 구조에 구멍이 생길 수 있기 때문에 잘 작동하려면 각 관계에 대한 레코드를 삽입해야합니다. 즉

별 A에는 형제와 삼촌이 별자리를 가질 수 있지만 아버지는 없습니다.

그래서 당신은 당신이 관계의 유형을 삽입 참조 테이블 "관계"를 만들 수 있습니다 당신이 참조 두 별과 관계가 교차하는 경우 다음 다른 테이블이 :

관계 : 아이디 INTEGER 설명 VARCHAR를 ((100))

stars_relations ID 정수 star1_id INTEGER relation_id INTEGER이 당신에게 줄 수

star2_id INTEGER 관계를 채우기위한 작은 일이지만, 나는 그것이 일할 수 있다고 생각합니다.