我是数据库的新手,在开始学习 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/