簡體   English   中英

將復雜對象列表插入數據庫

[英]Inserting a list of complex objects to the database

在我的應用程序中,我將具有一些要插入數據庫的復雜對象的列表。
該列表是附加到用戶的,因此我考慮將一個包含ID列表的列添加到Users表,然后讓該應用使用ID列表將該列表轉換回復雜的對象。

例如; 用戶具有3個Subjects ID: "2,3,23"
每個subject都有名稱,年級等。

在運行時,該應用將遍歷每個ID並從數據庫中獲取其屬性,並將完整的主題添加到列表中。

問題是,說實話,聽起來效率很低。
因此,我的問題是; 有沒有辦法更有效地做到這一點?

這樣做的通常方法是為主題創建一個單獨的表,並且該表具有一個UserID,該ID是返回擁有用戶記錄的外鍵。

這樣一來,您就不必為編輯逗號分隔的字符串而煩惱了。 它還允許您定義一個外鍵約束(只要您的數據庫可以這樣做),這將阻止您插入User表中不存在的UserID的Subjects記錄。

要為用戶加載主題,您只需使用用戶ID從主題表中檢索所有記錄即可。

如果多對多關系更合適,其中一個用戶可以鏈接到許多主題,而一個主題可以鏈接到可能的用戶,那么您將使用一個聯接表,即UserSubjectJoin,其中包含每個UserID和SubjectID配對。 同樣,這可能會有約束,以確保ID必須存在於“用戶”和“主題”表中。

在這種情況下,您需要將UserSubjectJoin表聯接到Subjects表,以檢索您指定的UserID的所有Subjects記錄。

要完全回答您的問題,這將更有效率,因為您不必在Users表中維護一列字符串,只需在Subjects表中添加/刪除行,並且關聯會自動更新。

而且,如果您實際上存在多對多關系,那么在您的初始設計下,您還需要在“主題”表上有一列UserID,這會使維護增加一倍,並且有出錯的風險。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM