我想创建一个存储消息的简单消息传递应用程序(类似于电子邮件,但只是消息)。我该如何设计数据库?
表Users
:
表E-mails
:
由于可以将电子邮件发送给多个人,因此存储到列的最佳方法是什么?我应该简单地把它作为一个字符串,用逗号分隔,然后在我的代码中检索所有具有函数的用户?或者有更好的方法来解决这个问题吗?
答案 0 :(得分:7)
表用户
表格电子邮件
表格收件人
因此,电子邮件的收件人作为多对一映射链接到电子邮件。
通过这种方式,您可以选择Recipients
表格中包含相应EmailId
例如,发送给2个用户的电子邮件将有行(作为示例)
---------------------------
| Id | Email | To |
---------------------------
| 1 | 1 | 3 (User1) |
---------------------------
| 2 | 1 | 4 (User2) |
Is storing a delimited list in a database column really that bad?举例说明为什么在数据库表中使用逗号分隔值是不好的做法。
答案 1 :(得分:5)
表用户
用户名(主键)
的userPassword
表格电子邮件
EmailID(主键)
从(外键到用户)
主题
时间
电子邮件内容
电子邮件布局(可能是一个字段中的内容和布局?XAML)
表格Email_Recipients
收件人ID(主键)
RecipientUserID(来自用户表的外键)
EmailID(来自电子邮件表的外键)
RecipientType //类型可以是Actual,CC,BCC
可以创建 EmailRecipientTypes
的另一个表格像 表格EmailRecipientTypes
通过这种方式,您可以将表格Email_Recipients修改为
表格Email_Recipients
虽然第四个表只包含3个记录,但它有助于减少数据复制,并且可以帮助您以某种所需的方式对电子邮件进行分组(可能是这样)