我從MySQL表中獲取一些標準類別,並將它們呈現在用戶的選擇框中。最重要的是,我想讓用戶將他們自己的類別添加到選擇框中。如果用戶添加類別,則只有該用戶纔會看到這些類別。每個人都會看到標準的類別。標準和自定義類別的一個或兩個mysql表?
您是否建議爲所有自定義類別保留一個單獨的表格,然後從兩個表格中獲取它們並在選擇框中進行合併,或者建議將所有類別保留在一個表格中並獲取標準類別用戶ID設置?
我從MySQL表中獲取一些標準類別,並將它們呈現在用戶的選擇框中。最重要的是,我想讓用戶將他們自己的類別添加到選擇框中。如果用戶添加類別,則只有該用戶纔會看到這些類別。每個人都會看到標準的類別。標準和自定義類別的一個或兩個mysql表?
您是否建議爲所有自定義類別保留一個單獨的表格,然後從兩個表格中獲取它們並在選擇框中進行合併,或者建議將所有類別保留在一個表格中並獲取標準類別用戶ID設置?
根據我的經驗,將類別保留在同一張表中對於各種情況下的您都有好處。你可以有一個像
| Category Table |
+----------------------+
| Category Details |
| User ID |
| Custom Flag |
| Category Added Dates |
擁有時設置每次添加新的自定義類別將讓你輕鬆分類的標準和自定義類別時間自定義標識的表結構。對於標準類別,用戶詳細信息可以設置爲Administrator
或類似的東西。按照這種方法,您可以通過優化的方式實現您正在尋找的功能。
從生產率的角度看,兩個表格方法看起來更好。但這只是第一次看。您可以添加指定類別是否自定義並將其編入索引的列。或者更好,按條件劃分一張表:
CREATE TABLE categories (
name VARCHAR(30),
description VARCHAR(500),
user_id INT
)
PARTITION BY RANGE(IFNULL(user_id)) (
PARTITION p_system VALUES LESS THAN(1),
PARTITION p_custom VALUES LESS THAN MAXVALUE,
);
在此示例中,user_id爲非自定義類別存儲空值。當然,根據你的情況你可以做得更好,我只是提供了主要想法:)
這很有趣。什麼是分區實際上在做什麼?另一種類型的索引只是將標準和標準分離以實現性能? – SeaBass
在性能範圍內,一張表顯然更好。從設計的角度來看,它並不是那麼明顯:從一個角度來看,自定義似乎只是實體的一個屬性;從另一個角度來看,它將這種關係帶給用戶,這可能被認爲是組成不同的實體。
那就是你誰比誰都知道整個上下文(以及這些自定義實體應該被使用/重用的情況),所以你決定該怎麼做。
謝謝!自定義標誌比僅檢查用戶標識是NULL還是0更好,或者您的意思是僅當我需要更多參數時我可以使用除用戶標識之外的自定義標誌嗎? – SeaBass
與檢查NULL用戶標識相比,自定義標記通常是二進制的,並且在大型表中具有更好的性能。 – Neels
所以字段類型是二進制的,包含0或1的真或假?這比tinyint(1)的0或1以及BOOL/BOOLEAN數據類型更好,我認爲它們是true/false? – SeaBass