簡體   English   中英

對如何為清單應用程序設計數據庫感到困惑

[英]Confused on how to design my database for a checklist app

我有一個要為其設計數據庫的清單應用程序。

清單由一堆選項卡(清單的各個部分)組成,每個選項卡都有許多checklist_items。 可以啟動和完成清單。 完成后,用戶可以隨后創建新的清單。 我正在嘗試設計數據庫,但令我感到困惑的是如何設計數據庫,以便可以查詢以下內容:

在創建的所有清單中,“住戶”選項卡上的幾項已被選中?

我有一個初步設計:

在此處輸入圖片說明

創建第一個清單時,我的標簽表如下所示:

tab_id, checklist_id, name
1,      1,            "Household"
2,      1,            "Outdoors"
3,      1,            "Work"
4,      1,            "School"

我的checklist_item選項卡如下所示:

   checklist_item_id, checklist_id, tab_id, checked
   1,                 1,            1,      0
   2,                 1,            1,      0
   3,                 1,            1,      0
   4,                 1,            2,      0
   5,                 1,            2,      0
   6,                 1,            2,      0
   7,                 1,            3,      0
   8,                 1,            3,      0
   9,                 1,            3,      0
   10,                1,            4,      0
   11,                1,            4,      0
   12,                1,            4,      0

檢查表項僅知道tab_id,並且當有多個檢查表時,它不會像說select from checklist_item where tab_id = 1那樣容易,因為將為Household提供更多的選項卡條目,所以我如何找出類似查詢的內容以上? 另外,我到目前為止設計不好嗎? 有沒有更好的方法來解決這個問題?

編輯:值得一提的是我是數據庫設計的新手

您的餐桌很好。 您仍然可以使用查詢SELECT * FROM checklist_item WHERE tab_id = 1因為tab_id唯一確定checklist_id(即每個標簽都屬於一個特定的清單),因此不同清單的“住戶”條目之間不會有任何混淆(每個條目都有它的自己的tab_id)。

如果要在所有清單中獲取家庭用品,請使用以下選項卡將checklist_item加入標簽:

SELECT i.*
FROM checklist_item i
INNER JOIN tab t ON i.tab_id = t.tab_id
WHERE t.name = 'Household'

好吧,我是通過http://www.w3schools.com/sql/sql_join.asp學會的

我認為您在查詢中缺少聯接。

SELECT CI.checklist_item_id, CIchecked, T.checklist_ID, T.name, C.time_started, C.time_ended
FROM checklist_item CI 
LEFT JOIN tab T ON CI.tab_id = T.tab_id 
LEFT JOIN checklist C ON CI.checklist_id = C.checklist_id
WHERE tab_id = 1 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM