2012-07-02 2 views
0

내 응용 프로그램을 사용하면 사용자가 sqlite 파일에 데이터를 저장할 수 있습니다. 고유 한 테이블 이름을 확보하기 위해 사용자가 "저장"을 누를 때 (날짜/시간) 종류의 이름으로 표를 작성하려고합니다. 명시 적으로 모든 테이블의 이름을 진술하지 않고 내 sqlite 파일에있는 모든 테이블을로드 할 수있는 방법이 있습니까?테이블의 이름을 모른 채 sqlite 테이블을로드하는 방법이 있습니까?

나는 sqlite 파일에 음식 목록을 가지고 있습니다. sqlite 파일에는 각 식품 항목에 대한 정보가 들어 있습니다. 사용자는 sqlite 파일을 통해 항목을 자신의 목록에 추가하여 자신의 레서피를 만들 수 있습니다. 목록의 각 항목은 테이블 뷰의 셀로 나타납니다. 레서피 작업이 완료되면 사용자가 레서피를 저장하고 시스템이이 레서피를 다른 테이블 뷰의 셀로 자동 추가하도록합니다. 그런 식으로 누군가가 셀을 선택하면 다음 테이블 뷰에 전체 레시피가 표시됩니다.

+1

데이터 저장 디자인이 좋지 않은 것처럼 들립니다. 대신에 각 행에 'saveType'변수가있는 것을 고려 했습니까? –

+0

'saveType'변수 주석의 의미는 무엇입니까? –

+2

잘못된 방식으로 데이터를 생각한 것 같습니다. SQL에서 추적하고자하는 것을 설명 할 수 있다면 우리는보다 쉽게 ​​테이블을 설정할 수 있도록 도와 줄 수 있습니다. – JoeCortopassi

답변

2

SQLite 데이터베이스를 올바르게 사용하지 않는 것 같습니다.

사용자 별 데이터 항목을 사용하는 것처럼 들립니다.

데이터베이스의 강점은 여러 사용자, 여러 항목 또는 여러 테이블의 데이터를 저장 한 다음 나중에 특정 사용자 또는 항목에 대한 데이터 만 검색하는 것입니다. 테이블에는 행이 추가, 업데이트 또는 삭제되어야하지만 일반적으로 테이블은 개별 데이터 요소로 생성 및 파괴되어서는 안됩니다.

당신이 이해하지 못하는 것이 조인 개념인지 의심 스럽습니다.

이 같은 보일 수 있습니다 무엇을 설명하기위한 디자인 : 사용자가 추가 할 때마다,이 같은 디자인을 사용하여

select * from Recipe r 
    join Recipe_Ingredients ri on r.Ingredients_ID = ri.ID 
    join Ingredient i on ri.Ingredient_ID = i.ID 
    where r.User_ID = (select ID from User where First_Name = 'John' and Last_Name='Doe') 

:

User 
--------------- 
ID 
First_Name 
Last_Name 
Email_Address 

Ingredient 
--------------- 
ID 
Name 
Description 

Recipe 
--------------- 
ID 
User_ID 
Name 
Description 
Serving_size 
Ingredients_ID 
Date_Created 

Recipe_Ingredients 
--------------------- 
ID 
Ingredient_ID 
Quantity 
Unit_of_measure 

So to get to get a list of recipes for John Doe (this query assumes you can only have one John Doe), you'd do: 

select * from Recipe r 
where r.User_ID = (select ID from User where First_Name = 'John' and Last_Name='Doe') 

또는 재료와 조리법의 목록을 얻을 수를 새로운 래서 피, 단순히 래서 피 및 recipe_ingredients 테이블에 행을 추가하십시오. 또는 새로운 재료를 추가 할 때 성분 표에 행을 추가합니다.

다음은 SQL joins tutorial에 대한 링크입니다.

관련 문제