2011-07-09 49 views
2

我是新來的sql,我想知道如何我可以添加一個列表到數據庫。這裏是我的意思是:如何添加一個列表到SQL數據庫(使用java)

我有一個Java類是這樣,我想插入其信息到數據庫中:

public class Dog{ 

    private int dog_id; 
    private String dog_name; 
    private ArrayList<String> dog_friends; 

} 

每隻狗對象有朋友不同量的大小。我的問題是我可以如何將這個列表添加到數據庫。我打算有3列(id,名稱,列表),我只是不知道如何添加列表。

回答

6

在關係數據庫世界裏,您所擁有的是一對多關係,它需要兩個數據庫表來表示信息。

在你的第一張表中,你將有idname;在你的第二張桌子上,你將有dog_id,friend_iddog_friend

對於第一個表中的每個條目,第二個表中可能會有多個條目。當您在第二個表格中插入一行時,請務必設置dog_id以匹配第一個表格中的id

使用此結構,您可以在SQL查詢中使用JOIN來一次獲取所有信息,或根據您的需要獨立查詢表。

+0

謝謝!清理了很多!生病了! – thunderousNinja

+0

@Mark我不認爲這應該是一對多的關係,因爲友誼通常是對稱的。事實上,如果這真的是一個多對多的關係,那麼應該有一個與dog_id和friend_id屬性相關的關聯表。否則(如果這應該是一對多關係)第二個表應該只包含dog_id和一個字符串,因爲string是一個值類型。 – proskor

3

你的表結構應該像這樣(ISH):

dogs 
id: int(11) 
name: varchar(255) 

dog_friends 
dog_id: int(11) 
dog_friend_id: int(11) 

你不需要dog_friend和第二表friend_id,假設dog_friends其他的狗。 dog_id和dog_friend_id都是對狗表中ID字段的引用。

但@Mark Elliot是正確的,因爲您將使用JOIN來訪問數據。

此外,您應該仔細閱讀關係數據庫,一般來說,在對SQL進行太多研究之前,學習爲什麼比學習如何更好。希望這可以幫助!

+0

你在哪裏存儲'dog_friends'中的字符串值? –

+0

我假設'dog_friend'字符串是其他朋友的名字。如果是這種情況,你不需要它們在關係模型中。 'dog_friend_id'會給你狗友,然後你可以通過連接獲得名字。 – WattsInABox

相關問題