คำถามติดแท็ก database-relations

4
Rails: การใช้บิลด์กับการเชื่อมโยง has_one ในราง
ในตัวอย่างนี้ฉันสร้าง a userโดยไม่มีprofileจากนั้นสร้าง a profileสำหรับผู้ใช้นั้นในภายหลัง ฉันลองใช้บิลด์กับhas_oneสมาคม แต่มันระเบิด has_manyวิธีเดียวที่ผมเห็นการทำงานนี้คือการใช้ ควรจะมีเพียงหนึ่งมากที่สุดuserprofile ฉันได้ลองสิ่งนี้แล้ว ฉันมี: class User < ActiveRecord::Base has_one :profile end class Profile < ActiveRecord::Base belongs_to :user end แต่เมื่อฉัน: user.build_profile ฉันได้รับข้อผิดพลาด: ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'profiles.user_id' in 'where clause': SELECT * FROM `profiles` WHERE (`profiles`.user_id = 4) LIMIT 1 มีวิธีในทางรถไฟที่จะมีการเชื่อมโยง 0 หรือ 1 …

4
คุณติดตามบันทึกความสัมพันธ์ใน NoSQL ได้อย่างไร?
ฉันกำลังพยายามหาคีย์ต่างประเทศและดัชนีที่เทียบเท่าในฐานข้อมูล NoSQL KVP หรือ Document เนื่องจากไม่มีตารางสาระสำคัญ (เพื่อเพิ่มคีย์ที่ทำเครื่องหมายความสัมพันธ์ระหว่างวัตถุสองชิ้น) ฉันนิ่งงันมากว่าคุณจะสามารถดึงข้อมูลด้วยวิธีใดที่จะเป็นประโยชน์สำหรับหน้าเว็บปกติได้ สมมติว่าฉันมีผู้ใช้และผู้ใช้รายนี้แสดงความคิดเห็นมากมายทั่วทั้งไซต์ วิธีเดียวที่ฉันคิดได้ในการติดตามความคิดเห็นของผู้ใช้ก็คือ ฝังไว้ในวัตถุผู้ใช้ (ซึ่งดูเหมือนไม่มีประโยชน์เลย) สร้างและรักษาuser_id:commentsค่าที่มีรายการคีย์ของแต่ละความคิดเห็น [ความคิดเห็น: 34, ความคิดเห็น: 197 ฯลฯ ... ] เพื่อให้ฉันสามารถดึงข้อมูลได้ตามต้องการ อย่างไรก็ตามการทำตามตัวอย่างที่สองคุณจะเจอกำแพงอิฐในไม่ช้าเมื่อคุณใช้เพื่อติดตามสิ่งอื่น ๆ เช่นคีย์ที่เรียกว่า "active_comments" ซึ่งอาจมีรหัส 30 ล้านรหัสอยู่ในนั้น เสียค่าใช้จ่ายตันเพื่อสอบถามแต่ละหน้าเพียงเพื่อให้รู้ว่าที่ผ่านมาบางส่วน ความคิดเห็นที่ใช้งานอยู่ นอกจากนี้ยังมีแนวโน้มที่จะเกิดสภาวะการแข่งขันเนื่องจากหลาย ๆ เพจอาจพยายามอัปเดตพร้อมกัน ฉันจะติดตามความสัมพันธ์ดังต่อไปนี้ในฐานข้อมูล NoSQL ได้อย่างไร ความคิดเห็นทั้งหมดของผู้ใช้ ความคิดเห็นที่ใช้งานอยู่ทั้งหมด โพสต์ทั้งหมดที่ติดแท็ก [คีย์เวิร์ด] นักเรียนทุกคนในชมรม - หรือทุกชมรมที่นักเรียนอยู่ หรือฉันคิดเรื่องนี้ไม่ถูกต้อง?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.