我是数据库的新手,在开始学习mySQL并使用Java驱动程序与服务器端的数据库进行连接之前,我想首先简化数据库的设计。我在数据库中有两列,CRN NUMBER和DEVICE_TOKEN。 CRN号将是一个五位数的字符串,而DEVICE_TOKEN将是一个字符串设备令牌(用于推送通知的iOS设备令牌)。让我尝试描述我要做什么。我将让用户从iOS应用程序发送服务器数据,主要是用于推送通知的设备令牌和他们想要观看的CRN(课程)。将有许多设备令牌要求观看相同的CRN号。我想知道将这些存储在数据库中的最有效方法。我将有一个线程浏览数据库中的所有行,并轮询每个CRN的网站。如果发生了我要查找的事件,我想通知与此CRN相关的每个设备令牌。最初,我想让一列为CRN,另一列为DEVICE_TOKENS。我知道虽然这是不可能的,并且每一列应该只对应一个条目。有人可以帮我找出设计数据库的最佳方法吗,那将是最有效的方法?
CRN DEVICE_TOKEN
12345 "string_of_correct_size"
12345 "another_device_token"
对于我来说,与我对同一个CRN的网站多次请求相比,对于我而言,每次迭代每个唯一的CRN ONCE轮询网站,然后将更改通知所有设备令牌,这将大大提高效率。我应该如何存储这些信息?谢谢你的时间
最佳答案
在这种类型的问题中,您具有一对多的关系(一个具有许多Device_Token的CRN),您想要一个单独的表来存储CRN,其中为每个新CRN分配了唯一的ID。然后,应为您的DEVICE_TOKENS制作一个单独的表,该表具有唯一ID,CRN和DEVICE_TOKEN的相关列。
使用这种模式,您可以遍历CRN表的行,对每个CRN进行轮询,然后对DEVICE_TOKEN表进行简单的JOIN查找所有已订阅的设备(如果发生更改)。