假设我希望用户选择一种或多种联系方式(电子邮件、电话、传真等)。如果他们选择其他,那么他们可以输入自己的单一联系方式。将其存储在数据库中的最佳方法是什么?我看到了三种可能性:
- 使用一组数据类型列,加上一个“other_contact”varchar 列来存储可选的用户输入值。
- 使用多对多和用户输入的列。所以会有一个用户表、一个contact_method 表和一个连接两者的user_contact_method 表。加上一个 user.other_contact varchar 列来存储可选的用户输入值。
- 只需使用多对多。设置与 2 相同,但允许用户将条目添加到 contact_method 表。但这意味着我必须添加一列来跟踪“系统”值(用户无法更改或删除这些值,只有这些值显示在下拉列表中)。另外,我必须添加额外的逻辑以允许更改用户输入的值。
对上述有任何意见,还是有更好的解决方案?