[英]Dilemma about the number of columns on a table
場景:
我正在創建一個清單的網站,它可以同時由多個用戶完成/訪問,因此它需要某些字段可編輯,可保存和可檢索。
困境:
該清單有212個條目,這意味着212行。 我有5列需要輸入的內容,即212x5。 這意味着,我必須創建1060列,以便我可以對網站進行編碼以執行我想要的操作。 表格上的1060列似乎是錯誤的,使用起來很累。
我的示例解決方案:
我將5列分成5個表,以創建清單的日期作為其主鍵。 然后,我將這5個表用於其對應的列,從而將每個表的列數減少到212。
無論如何,我可以減少這個嗎? 對不起,很長的帖子,任何幫助將不勝感激。
**編輯:由於某些原因,我無法評論任何答案,並在頁面上顯示錯誤。 不過,我非常感謝大家的回答; 但是,我有1條信息可能會改變您的答案。 我曾考慮過制作5列而不是令人討厭的1060,但是這樣做,我將需要/系統將需要為每1個工作表創建1個表,當然,隨着時間的流逝,這將對數據庫造成嚴重的問題。
盡管ah_hau仍然相當龐大,但它的答案似乎是最小且最容易處理的。 通過使用它,系統將為每個清單創建217個條目,但僅使用6-8列。 感謝所有了解此問題的人,我希望我在下一個問題上再次與大家見面。
有不同的方法,我只為每個清單存儲一個Json字符串。 Json字符串將是對象{checklistName,checklistValue,timestamp}的Json數組。 因此,數據庫表將只有兩列{id,checklist}。 這是最起碼的方面,您可能需要將其分解為較小的Json對象和/或向它們添加更多詳細信息。
縱觀您的所有要求,您已禁止使用普通的6柱設置,但我仍然建議您使用類似的設置。
嘗試有這樣的桌子
id [bigInt] (PK,auto_incrment)
rowId [int] //checklist row id
columnId [int] //checklist column id
text [varchar/text]
create_date [Date]
create_time [Time]
Index
unique key chekcklist_cell (create_date, rowId, columnId)
根據您的喜好,您還可以將columnId
字段分為5列,名稱為column1~5
以減少數據庫條目數。 但是我建議使用我的設置,因為用戶似乎會一次更新您的清單1個單元格(或整個列表中多個單元格),這對我的架構來說更有意義。 此外,該架構非常可擴展,可以輕松地向其中添加新字段。 我能想到的最后一件事是,當用戶僅更新1個單元格時,您不必鎖定整個清單。 這有助於加快並發訪問速度。
為什么不直接在清單表中再添加1列?
你的表結構應該看起來像
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.