如何創建一個Message
表像這樣在MySQL的數據庫,其中存儲的信息和他們的反應?如何實現mySQL的自我關係?
1
A
回答
5
你可以試試這個:
create table messages (
message_id int primary key,
response_to int null references messages(message_id), -- self relationship
user_from int not null references users(user_id),
user_to int not null references users(user_id),
content varchar(200) not null
);
第一條消息將有null
值未response_to
場。請注意,如果您打算存儲「對話」而不是「消息」,請考慮使用CLOB(字符大對象)的普通表來存儲對話的JSON或XML表示形式。它會加快你的查詢速度(如果你總是打算一次讀取整個對話而不是單個消息)。
+0
謝謝巴勃羅,我明白了這是如何運作的!如果沒有響應,則在這種情況下空值很重要。 – Ciphor 2013-03-25 10:25:45
1
您可以創建一個foreign_key它引用原郵件ID,但不要忘記允許空值,因爲原始郵件將不會有這個按鍵。
但是不是更好的方法有一個線程表,然後在消息表中保存threadId以便可以匹配哪些消息屬於哪個線程,發佈時間可能是識別響應的一個很好的指標消息。
+0
感謝增加對空值的點,你的建議是好的,有用的投入! – Ciphor 2013-03-25 10:26:50
相關問題
- 1. 實現自我關係
- 2. 你將如何實現MegaProtoUser的自我關係?
- 3. 如何使用回送自我關係實現遞歸連接?
- 4. 如何在Mysql中建立自我與自我的關係?
- 5. MySQL:非自治性的自我關係
- 6. 如何在MySQL中實現n對n關係的雙連接
- 7. 如何在MySQL數據庫中實現'Favorite'關係?
- 8. 如何使用mysql實現關係數據庫
- 9. SQL/MySQL - 如何在一對多關係中實現AND子句?
- 10. Grails實現關係
- 11. 自我關係的實體框架
- 12. 如何在Java中實現n:m關係?
- 13. 如何實現可選關係?
- 14. 如何手動實現JPA關係OneToMany
- 15. 如何實現多對多關係?
- 16. 自我關係與關係
- 17. JPA實體關係多對多的自我關係
- 18. 如何在Grails中實現自引用關係?
- 19. 如何通過EF來實現ASP.NET C#中實體與關係的關係?
- 20. 如果發現使用系統實現,否則使用我自己的實現
- 21. 我該如何實現這種關係(繼承,構圖,其他)?
- 22. 我如何在rails3中實現親子關係
- 23. 我如何在覈心數據中實現父子關係?
- 24. 實體關係建模:如何實現實體「角色」?
- 25. DDD:如何正確實現與JPA/Hibernate實體的關係?
- 26. 關係Fisher核心實現
- 27. 使用db4o實現關係
- 28. 關係數據庫實現
- 29. 我願意幫助實現代碼第一次自我的關係
- 30. 如何列出自我關係表?
什麼是錯列'Message.response_to'具有FK爲'Message'的PK? – 2013-03-25 10:21:16
爲什麼你不只是一個字段添加到持有另一消息的主鍵消息表? – Philipp 2013-03-25 10:22:16