【问题标题】:How to add a list to a SQL database (using java)如何将列表添加到 SQL 数据库(使用 java)
【发布时间】:2011-07-09 23:13:14
【问题描述】:

我是 sql 新手,我想知道如何将列表添加到数据库中。这就是我的意思:

我有一个像这样的 java 类,我想将它的信息插入到数据库中:

public class Dog{

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

}

每个狗对象都会有不同数量的朋友。我的问题是如何将此列表添加到数据库中。我打算有 3 列(id、name、list),我只是不知道如何添加列表。

【问题讨论】:

    标签: java mysql sql


    【解决方案1】:

    在关系数据库世界中,您所拥有的是称为一对多关系,它需要两个数据库表来表示信息。

    在您的第一个表中,您将拥有idname;在您的第二张表中,您将拥有 dog_idfriend_iddog_friend

    对于第一个表中的每个条目,第二个表中可能会有许多条目。当您在第二个表中插入一行时,请务必设置dog_id 以匹配第一个表中的id

    使用这种结构,您可以在 SQL 查询中使用JOINs 来一次获取所有信息,或者根据您的需要独立查询表。

    【讨论】:

    • 谢谢!!清理了很多!!我会调查的!
    • @Mark 我认为这不应该是一对多的关系,因为友谊通常是对称的。实际上,如果这真的是多对多的关系,那么应该有一个带有dog_id和friend_id属性的关联表。否则(如果这应该是一对多关系)第二个表应该只包含 dog_id 和一个字符串,因为字符串是一个值类型。
    【解决方案2】:

    您的表结构应该如下所示(ish):

    dogs
    id: int(11)
    name: varchar(255)
    
    dog_friends
    dog_id: int(11) 
    dog_friend_id: int(11)
    

    假设 dog_friends 是其他狗,则第二个表中不需要 dog_friend 和friend_id。 dog_id 和 dog_friend_id 都会引用 dog 表中的 ID 字段。

    但是,@Mark Elliot 是正确的,因为您将使用 JOIN 来访问数据。

    此外,一般来说,在深入研究 SQL 之前,您应该阅读关系数据库。学习为什么比学习如何更好。希望这会有所帮助!

    【讨论】:

    • 你在哪里存储来自dog_friends的字符串值?
    • 我假设dog_friend 字符串是其他狗的朋友的名字。如果是这种情况,您将不需要它们在关系模型中。 dog_friend_id 会给你狗朋友,然后你可以通过加入得到名字。
    猜你喜欢
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 2021-01-03
    • 2021-02-20
    • 2017-12-27
    • 2019-03-19
    相关资源
    最近更新 更多