假設您有一個關係需要以某種方式引用另一個表中的任何(可變)數量的不同項目(通過它們的鍵)。這將如何實現?在mysql中引用多個項目的正確方法?
1
A
回答
1
爲此,您通常會有一箇中間表。下面是一個示例模式
Table - Question
QuestionID
Title
Body
Date
Table - Tag
TagID
TagName
Table - QuestionTag
QuestionID
TagID
在這樣的模式中,問題表包含問題。標籤表格包含可應用於問題的標籤列表(如本網站所示)。 QuestionTag將兩者連接在一起,這樣一個問題就可以鏈接到任意數量的標籤。爲了得到它的標籤一個具體的問題,你可以做以下
SELECT Question.QuestionID, Question.Title,Question.Body,Question.Date,GROUP_CONCAT(Tag.TagName)
FROM Question
LEFT JOIN QuestionTag
ON Question.QuestionID = QuestionTag.QuestionID
LEFT JOIN Tag
ON QuestionTag.TagID = Tag.TagID
WHERE [email protected]
GROUP BY Question.QuestionID
1
使用一個例子:
對於一個書店,作者可以有任意數量的書籍。
+Table_Author+
--------------
id
name
--------------
+Table_Book+
------------
id
title
author_id <--this is the key!
------------
然後你就可以得到每本書針對特定作者:
SELECT books.title FROM Table_Book books WHERE books.author_id=2
內容類型的方法:
+Table_contentype+
-------------------
id
name
table_name_from_model --don't know how to properly call it
-------------------
+Table_Person+
---------------
id
name
---------------
+Table_Person_Objects+
-----------------------
id
person_id
content_type_id
object_id
-----------------------
Then your person can have, for example:
+Table_contentype+
--------------------------------------
id name table_name
--------------------------------------
1 Item A items_a_table
1 Item B items_b_table
--------------------------------------
+Table_Person_Objects+
--------------------------------------------------
id person_id content_type_id object_id
--------------------------------------------------
1 1 1 1
2 1 1 4
3 1 2 2
4 2 1 1
--------------------------------------------------
這樣一來,1個人可以有2 Items_A(1, 4)1 Item_B(2)和person 2可以具有與Person 1相同的Item_A(1)。
這個我認爲是我能想到的最靈活的方案。
1
相關問題
- 1. 在ActionLink中使用多個項目的正確方法?
- 2. 建立多個項目的DLL的正確方法?
- 3. 使用多模塊maven項目的正確方法
- 4. 在asp.net mvc 4項目中引用圖像的正確方法是什麼?
- 5. 在Visual Studio 2010中引用調試/發佈項目的正確方法?
- 6. 如何與多個項目引用正確發佈Dot.Net解決方案
- 7. 不正確的項目引用GUID
- 8. 在wxPython中訪問FlexGridSizer中項目的正確方法?
- 9. 什麼是從QTableWidget中刪除多個項目的正確方法?
- 10. 使用不同項目的方法(Eclipse中的項目引用)
- 11. 在SVN中導入項目的正確方法?
- 12. 在TFS 2010中構建VB6項目 - 正確的方法?
- 13. 在android studio中安排項目的正確方法是什麼?
- 14. 什麼是在項目中包含Hadoop類的正確方法
- 15. 在eclipse中爲eSWT配置項目的正確方法?
- 16. 在Firebase中建模項目集合的正確方法
- 17. NuGet未正確更新項目引用
- 18. 在多部分cmake項目中獲取外部源代碼的正確方法
- 19. 哪個是在一個項目中添加Jquery和Angularjs的正確方法
- 20. 我可以在另一個項目中引用Scrapy項目,例如c#中的多個項目引用?
- 21. Mysql的Fiterby多個複選框的正確方法
- 22. 刪除QStandardItemModel的多個索引的正確方法是什麼?
- 23. 在If語句中使用多個條件的正確方法?
- 24. Android庫項目中的方法引用太多 - ClassNotFoundException
- 25. 如何在多個項目中引用TFS項目
- 26. Mysql交叉表引用 - 這是正確的方法嗎?
- 27. MySQL - 使用UNIQUE KEY的正確方法?
- 28. 哪個是在複雜的Python項目中處理導入的正確方法?
- 29. VS 2012多項目模板將不會正確引用EF 5
- 30. 將多個項目鏈接到MySQL中的單個項目的最佳方式
我正在使用的數據沒有像這樣的靜態關係。這對一個人的物品來說更像是一種關係。就像一個人擁有這些物品,而人擁有x個物品(一些物品可以/將是相同的) – TheDog
噢,好的。你應該把它放在你的問題中。然後你可以使用類似於django中「內容類型」概念的東西。我會將其添加到答案 – santiagobasulto
這應該怎麼表達?我想確保我的問題對其他人有幫助 – TheDog