如何在单个字段中存储多个外键值?

Al-*_*han 3 foreign-key sql-server primary-key

我在MS SQL-Server数据库中有以下两个表:

user_info
  ( user_id PRIMARY KEY, 
    email, 
    password
  ) 
Run Code Online (Sandbox Code Playgroud)

messages
  ( time_stamp, 
    message, 
    sender, 
    recipients, 
    FOREIGN KEY(sender) 
      REFERENCES user_info (user_id), 
    FOREIGN KEY(recipients) 
      REFERENCES user_info (user_id)
  ) 
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以user_idmessages表的收件人字段中存储多个值。我是新手,请帮助我如何解决这个问题。

Phi*_*lᵀᴹ 8

最好的方法是使用一对多关系message_recipients表。

user_info
( 
  user_id INTEGER PRIMARY KEY, 
  email VARCHAR(256), 
  password VARCHAR(256)
);

messages
( 
  message_id INTEGER PRIMARY KEY
  time_stamp DATETIME, 
  message VARCHAR(4000), 
  sender INTEGER -- references user_info.user_id
);

message_recipients
(
  message_id INTEGER, -- references messages.message_id
  recipient_id INTEGER -- references user_info.user_id
);
Run Code Online (Sandbox Code Playgroud)