簡體   English   中英

關於表上的列數的困境

[英]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列?

你的表結構應該看起來像

  1. 用戶身份
  2. entryid(值(從1-212開始)
  3. col1_entry
  4. col2_entry
  5. col3_entry
  6. col4_entry
  7. col5_entry

暫無
暫無

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

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