Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结构化mySQL_Mysql_Database Design - Fatal编程技术网

结构化mySQL

结构化mySQL,mysql,database-design,Mysql,Database Design,我有一张有联系人的桌子,还有一张有留言的桌子。在消息表中,我有一个单元格,其中保存了消息发送到的那些成员的ID的序列化字符串 现在,我将附加一个唯一标识符令牌,当一个成员响应时,我将能够跟踪它是哪个成员。我应该将此信息存储在一个单独的表中,还是将另一个单元格添加到消息表中,该表还可以保存一个响应成员字符串 逻辑告诉我,一个单独的表会更容易,但同时它可以增长得非常快,因为可能有多组消息接收者,每个接收者可以有多个消息,这些消息将转换为多行,与使用序列化字符串的单个单元格不同。使用单独的表可能更容易

我有一张有联系人的桌子,还有一张有留言的桌子。在消息表中,我有一个单元格,其中保存了消息发送到的那些成员的ID的序列化字符串

现在,我将附加一个唯一标识符令牌,当一个成员响应时,我将能够跟踪它是哪个成员。我应该将此信息存储在一个单独的表中,还是将另一个单元格添加到消息表中,该表还可以保存一个响应成员字符串


逻辑告诉我,一个单独的表会更容易,但同时它可以增长得非常快,因为可能有多组消息接收者,每个接收者可以有多个消息,这些消息将转换为多行,与使用序列化字符串的单个单元格不同。

使用单独的表可能更容易、更快

例如,如果要查找发送给特定用户的所有邮件,只需进行一个简单的查询:
WHERE recipient=id
。此查询将执行得很好,因为它可以使用索引


如果将其存储为文本字段中以逗号分隔的ID列表,则必须使用例如编写查询。此查询将无法使用索引。

使用单独的表很可能更容易、更快

例如,如果要查找发送给特定用户的所有邮件,只需进行一个简单的查询:
WHERE recipient=id
。此查询将执行得很好,因为它可以使用索引


如果将其存储为文本字段中以逗号分隔的ID列表,则必须使用例如编写查询。此查询将无法使用索引。

创建单独的表。首先,存储序列化的成员字符串是一个错误的决定。查询这样一个字段既麻烦又慢


创建一个单独的交叉链接表,将成员绑定到消息,这样您就可以通过它进行实际查询。然后,您可以向该表添加一个字段“responsed”,以标记成员是否响应。

创建一个单独的表。首先,存储序列化的成员字符串是一个错误的决定。查询这样一个字段既麻烦又慢


创建一个单独的交叉链接表,将成员绑定到消息,这样您就可以通过它进行实际查询。然后,您可以向该表添加一个字段“responsed”,以标记成员是否响应。

我认为传统的方法是使用联接表。因此,如果您有一个
Contacts
表和一个
Messages
表,您可以创建一个
contactmessagesent
表,其中包含
Contacts
Messages
的主键作为列,以跟踪哪些消息发送给了哪些联系人。您可以创建另一个联接表来跟踪响应

所以


如果使用适当的索引,即使表中有很多行,它也会运行良好。

我认为传统的方法是使用联接表。因此,如果您有一个
Contacts
表和一个
Messages
表,您可以创建一个
contactmessagesent
表,其中包含
Contacts
Messages
的主键作为列,以跟踪哪些消息发送给了哪些联系人。您可以创建另一个联接表来跟踪响应

所以


如果使用适当的索引,即使表中有很多行,它也会运行良好。

我认为我不需要功能来查找发送给每个收件人的邮件。但我很可能需要显示它是发给谁的,以及是否有回复。我开始向另一张桌子倾斜。mySQL中被认为是相当大的表。假设只有4列带有简单数字ID,我可以有多少行?我不认为我需要一个功能来查找发送给每个收件人的邮件。但我很可能需要显示它是发给谁的,以及是否有回复。我开始向另一张桌子倾斜。mySQL中被认为是相当大的表。假设只有4列具有简单数字ID,我可以有多少行?这取决于您将如何查询表。您可能希望按contact_id和message_id进行索引,两者(contact_id和message_id)都取决于查询表的方式。您可能希望按联系人id、消息id和两者(联系人id、消息id)编制索引。我发布的一些问题仍然没有答案。如果我接受了一个没有回答这个问题的人,这将使SO模型贬值。这很公平。你是极少数只回答了70%问题的人之一。:)我发布的一些问题仍然没有答案。如果我接受了一个没有回答这个问题的人,这将使SO模型贬值。这很公平。你是极少数只回答了70%问题的人之一。:)
ContactMessagesSent
--------
contact_id ; // primary key of Contacts
message_id ; // primary key of Messages
...