如何在数据库中存储数组?

Dab*_*rnl 3 .net sql database-design

我有一个简单的消息系统,到目前为止使用基于文件的存储.由于系统用户数逐渐增加,我想切换到基于数据库的存储.

在代码中,消息服务器维护用户列表(带有凭据)和消息列表.Message对象的主要字段是Sender(User类型),Recipients(类型为User [])和Content(类型为string).
通常,用户将从服务器请求发送给他的消息,并接收其中"收件人"字段包含其自己的用户名的所有消息.

因此,对于数据库,我设想了以下表:
-A Users表
-A Messages表
( - 每个用户的表,指定由MessageID发送给他的消息)?

我遇到的问题是如何存储收件人字段(其中包含一个数组),以便数据库查询可以搜索请求接收发送给他的邮件的用户.我没有比为在系统上注册的每个新用户动态创建表更好的解决方案,该系统保存对作为收件人列出的消息的引用.其他方法可能吗?

非常感谢!

Dan*_*llo 11

我没有比为每个新用户动态创建表更好的解决方案......

关系数据库的角度来看,您永远不应该看到"动态创建的表" .


一般来说,您的问题解决如下:

  • 一个users表(user_id,name,surname ...)
  • 一个messages表(message_id,time_stamp,subject,body,sent_by ...)
  • messages_recipients表(MESSAGE_ID,recipient_id)

无论是sent_by在现场messages表和recipient_id该领域中的messages_recipients表应该是外键user_id领域users表.