我想在mysql db中存儲一個項目的類別。我應該爲這個字段使用哪種數據類型。請注意,一個項目可以有多個類別。快速(髒?不確定)方法是按位使用INT。但INT是32位長,這意味着我最多隻能爲一個項目分配32個類別。目前,這不是問題。但是我不知道該怎麼做,比如說,在某一天我必須這樣做。有什麼建議麼?什麼類型應該用於多個類別的字段在mysql中
0
A
回答
1
類似的東西
table item
field item_id (int) => PK
item_name
etc
table category
field cat_id (int) => PK
field cat_name
etc
//a table to manage many to many relationship
table item_category
field item_id (int) => FK to item.item_id
field cat_id (int) => FK to category.cat_id
//PK is item_id, cat_id
0
冒着downvote,但我的建議是 - 不要使用關係數據庫來存儲這種類型的「靈活」結構的;不是你不能 - 你可以(如拉斐爾的回答);但你必須在多個表中處理可怕的JOIN
,以顯示單個頁面。
- 是否要按類別過濾?
- 是否要按類別搜索?
- 你想顯示「最受歡迎」類別嗎?
- 你想創建一個「標籤雲」嗎?
對於所有這些,你需要一個鍵/值存儲 - 對這種東西最優化的數據庫。 redis,memcached,甚至couchbase都可以用於此。
的想法很簡單:
您存儲在關係數據庫中的項目的顯着特性。這是不會改變的東西;例如,每件商品都會有一個名稱,一個股票代碼,一個唯一標識符等。
對於任何其他屬性,可以靈活的每種類型的項目(例如,襯衫會有尺寸,顏色;計算機將具有硬盤類型,內存等),將它們存儲爲鍵/值對。您將每個鍵值對通過其唯一ID鏈接到該項目。
由於第k/V數據存儲被用於靈活的數據搜索和在它們之間的快速查詢優化,則不是由可以存儲每個產品屬性的數量或類型的限制。您可以添加/刪除/重置所有內容,而不必打擾核心數據庫結構。
這種範例很常見,所以一些數據庫甚至爲此提供了本機類型。例如,postgresql有一個JSON
column type。
相關問題
- 1. 什麼字段類型用於Django中的模型字段?
- 2. 什麼數據類型應該用於貨幣計算類型
- 3. 什麼MySQL數據類型應該用於xsd:anyURI?
- 4. 我應該在mysql中的多個request_id上添加什麼類型的索引
- 5. mysql | SET和TEXT字段類型有什麼區別?
- 6. 什麼應該是刪除字段的數據類型?
- 7. 爲什麼mysql有許多不同的字段類型?
- 8. mySQL中的字段類型
- 9. 什麼字段類型?
- 10. 什麼數據類型應該用於DynamoDB中的時間戳?
- 11. MySQL字段類型
- 12. MySQl字段類型
- 13. 什麼MySQL類型用於java.time.ZonedDateTime
- 14. 什麼MySQL數據類型用於兩個大寫字母
- 15. 什麼時候應該在scala中使用泛型類中的類型綁定?
- 16. 我應該使用MySQL blob字段類型嗎?
- 17. 爲什麼可以在類型字段中的類中混合?
- 18. 什麼是用於Sqlite數字的最佳SQL字段類型
- 19. admob中我的應用程序類別應該是什麼?
- 20. 什麼類型的對象應該用於match-3遊戲(ios)
- 21. 什麼Schema.org類型應該用於我們的產品?
- 22. 應該是什麼類型的變量?
- 23. 什麼類型用於Select:在Spring中是多個?
- 24. Perl:「validate」函數中類對象應該使用什麼類型
- 25. 抽象類中字段的可訪問性應該是什麼?
- 26. 字段用於類型
- 27. 關於MySQL選擇字段類型blob`
- 28. 我應該在Android中使用什麼類型的適配器?
- 29. 應該在java中使用什麼類型的屬性?
- 30. 我應該在netbeans中使用什麼類型的表單?
你應該有一個不同的表來存儲項目類別關係。 – 1615903
你需要一個多對多的關係,如果你不能這樣做,你可以改變從'Int'到'BIGINT' => 64個類別的按位字段 – Stephan
@ user1615903所以我需要一個新的tbl來存儲這種關係。結構是什麼,我應該爲所有可能的類別創建字段作爲項目的屬性嗎? – zoujyjs