java - 将特定用户保存的多个 url 插入数据库的最佳方法是什么?

标签 java mysql sql

我正在制作一个书签网站,用户可以在其中保存他的网址。那么将用户的所有 url 插入数据库 (mysql) 的最佳方法是什么。

1) 为单个用户创建单独的表。在每个表中创建 1 列并每行(每个单元格)放置 1 个 url。

2) 创建 1 个表并根据用户的行将所有 url 插入到单个单元格中。

如果第二个选项是最好的那么谁能解释我该怎么做?我可以在一个单元格中插入一个 url,但如何将所有 url 插入一个单元格并再次检索它以正确的方式显示。 感谢您抽出时间阅读我的问题。我自己努力尝试这样做但失败了。这就是为什么要在这里问。

最佳答案

创建一个 bookmark包含以下列的表:(id, fk_user_id, url) .每个条目都有自己的 ID,外键是用户的 ID。

您不想为每个用户创建一个单独的表。那不会缩放!假设您有 1000 个用户 - 那至少有 1000 个表!

第二种方法可能可行,但存在以下问题:

  • 要添加 URL,您必须读入现有值,附加新值,然后再将其写回。这是您正在执行的两个数据库操作,只是为了添加一个新值。如果您采用外键方法,您只需执行一次写入。
  • 虽然可能性不大,但您可能会遇到这样的情况:用户使用两个客户端,而您最终几乎同时收到来自他们两个的添加书签的请求。这可能会导致一致性问题。例如,假设您已经拥有 http://google.com在列中,客户 #1 想要添加 http://reddit.com客户 #2 想要添加 http://stackoverflow.com .如果客户端 #2 在客户端 #1 的数据被持久化之前读入值,您将以 http://google.com, http://reddit.com 结束。或 http://google.com, http://stackoverflow.com取决于谁最后写入表。如果您几乎同时收到来自同一客户的多个添加请求,甚至可能会发生这种情况。
  • 添加删除书签,您的一致性问题可能会变得更糟。删除也变得困难了很多,因为不是简单的通过书签id删除,现在必须拉入数据,拆分,然后对url进行字符串比较,找出需要删除的内容,然后写修改数据回来。如果您最终几乎同时收到多个删除请求怎么办?您遇到了与添加新 URL 的情况相同的问题。

关于java - 将特定用户保存的多个 url 插入数据库的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30581334/

相关文章:

php - 在 CakePHP 框架内自动创建数据库表

java - 转换过程中的一般错误 : Unsupported class file major version 61 in Linux when I build an android app

java - 如何将 JDK 7 添加到 netbeans?

java - 在 fxml 中使用自定义控件

mysql - Rails 中大型日志记录应用程序的数据库和表结构

php - 从网页提取的数据/文本不会插入到 mysql 数据库中

asp.net - 使用 asp.net 连接到 mySQL 数据库

sql - 在Postgresql中,对2列添加唯一约束,不等于特定值

sql - 通过在 SQL Server 中追加到右侧来制作多行的单行?

java - 如何在 JOptionPane 中显示来自网站的图像?