2017-07-27 28 views
-3

我一直在絞盡腦汁,但仍然想不到一個解決方案。在MySQL中存儲清單結果

我正在創建清單Web應用程序的數據庫。基本上,創建一個清單並用「完成」或「不完整」選項來完成,然後生成一份報告,顯示哪些項目未完成。

目前,有一個「清單」表由多個「清單項目」組成。檢查表的結果(無論是完整的還是不完整的)將被存儲在名爲「報告」的表格中,但這是我需要幫助的地方。這是因爲我需要存儲他們是否被標記爲完整且未完成,並且每個檢查列表具有不同的長度。

一個可能的解決方案是簡單地存儲每個'Checklist Item'的唯一ID,該ID不在可以存儲在'Report'中的字符串中工作,每個ID都用逗號分隔。然後可以使用PHP的「爆炸」功能提取每個ID,這可能會起作用。不過,我不認爲這是最優雅的解決方案,所以任何幫助更好的解決方案將不勝感激。

編輯(重要):檢查清單每天完成,報告打算長期保存。因此,向每個項目添加「報告」字段將不起作用。

+0

爲什麼每個清單項目在「報告」中都沒有單獨的行?爲什麼有些名單比其他名單更重要? – BeetleJuice

+0

https://en.wikipedia.org/wiki/Database_normalization – deceze

+0

我不明白你爲什麼需要同時存儲。也許你可以只存儲完成的任務? – Strawberry

回答

2

您的問題,素質重構進行不同的設置:

  • 爲清單表(ID,檢查單的名稱,...)
  • 的清單項表(checlistId,的itemId,標題,.. )

現在您可以爲每個清單或每個checklistitem添加一個新表格。但是對於我來說,每個上述表格(TRUE或FALSE)上的簡單字段就足夠了。

編輯

閱讀註釋後的表格報告應包括以下字段 - 的itemId - 用戶id - (當項目可以鏈接到多個清單可選checklistId) - (已完成始終是真實的)

仍然存在一個問題:完成後將項目添加到清單中。 更好的解決方案是爲正在進行的清單(與啓動它的用戶)和指向當前完成項目的鏈接添加表格。

+0

這是行不通的,因爲清單已經多次完成(例如每天一次)。要做你的建議將需要每次重新創建的項目。 但是我的數據庫中已經有兩個表格(checklist,checklist-items)。 – PL200

+0

然後只需添加完整的表格checklistItemId,完成日期。 – Bee157

+0

但我認爲我們錯過了一些信息。什麼是不同的用例:創建清單,添加項目,刪除項目,啓動清單,完成項目,...在這個配置中,你應該保存在數據庫中的開始(進行中)清單 – Bee157

0

我在我們公司的軟件(建立的PHP框架)中實施了一個清單。這僅僅是一個對象的基於字符串的屬性checklist。在那裏我保存了一個JSON格式的字符串,它代表了一個帶有複選框元素的數組。每個元素本身又是一個包含checked(布爾值1或0)和label(實際複選框標籤文本)的數組。這適用於我,也許可以幫助你:)看看jsonencode()/jsondecode()

要對它們進行排序,只需添加另一個元素sort