java - 刚接触数据库,我该如何设计? MySQL 和 Java

标签 java mysql database database-design jdbc

我是数据库的新手,在开始学习 mySQL 和使用 Java 驱动程序连接服务器端的数据库之前,我想先搞清楚数据库的设计。我在数据库中有两列,CRN NUMBER 和 DEVICE_TOKEN。 CRN 号码将是一个五位数字的字符串,DEVICE_TOKEN 将是一个字符串设备 token (用于推送通知的 iOS 设备 token )。让我尝试描述我正在尝试做的事情。我将让用户从 iOS 应用程序发送我的服务器数据,主要是他们用于推送通知的设备 token 和他们想要观看的 CRN(类(class))。将有许多设备 token 请求观看相同的 CRN 号码。我想知道将这些存储在数据库中的最有效方法。我将用一个线程查看数据库中的所有行,并为每个 CRN 轮询网站。如果我要查找的事件发生了,我想通知与此 CRN 关联的每个设备 token 。最初,我希望有一列是 CRN,另一列是 DEVICE_TOKENS。我了解到这是不可能的,并且每一列应该只对应一个条目。谁能帮我找出设计这个数据库的最佳方法,那将是最有效的?

CRN     DEVICE_TOKEN

12345   "string_of_correct_size"
12345   "another_device_token"

与其对同一个 CRN 向网站发出多个请求,不如在每次迭代中针对每个唯一的 CRN 轮询网站一次,然后将更改通知所有设备 token ,这样效率会高得多。我应该如何存储这些信息?感谢您的宝贵时间

最佳答案

在这种具有一对多关系(一个 CRN 与许多 Device_Tokens)的问题中,您希望有一个单独的表来存储 CRN,其中为每个新 CRN 分配了一个唯一 ID。然后应该为您的 DEVICE_TOKENS 创建一个单独的表,其中包含唯一 ID、CRN 和 DEVICE_TOKEN 的列。

使用此架构,您可以遍历 CRN 表的行,针对每个 CRN 进行轮询,然后只需对 DEVICE_TOKEN 表执行简单的 JOIN 操作即可在发生更改时查找所有订阅的设备。

关于java - 刚接触数据库,我该如何设计? MySQL 和 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435992/

相关文章:

java - 如何按小时拆分字符串 :minutes:seconds using Java

php - 我如何定义 if 条件来检查 array_key 长度是否=13?

mysql - 如何从 Perl 连接到 MySQL?

sql-server - 在 Visual Studio 中拥有数据库项目后,如果我编辑存储过程或 View ,我该如何将更改应用到服务器?

android - 将 Android 应用程序连接到 BlueMix 存储的 DB2 数据库

java - session 在 Java 中是如何工作的?

java - 通过 XPath 将任意 XML 字符串插入 XML 文档的代码

java - "cannot execute binary file: Exec format error"hdfs命令

php - 存储纬度和经度的最佳 mysql 数据类型是什么?

java - 如何将结果添加到具有长字段列表的对象?