mysql - 存储具有可变数量字段的电子邮件列表
问题描述
我希望允许我的用户存储他们的电子邮件列表,并且我正在使用 MySQL。
我想让用户决定他们的电子邮件列表可能包含哪些字段。例如。姓名、电子邮件、位置、生日
每个用户可能需要不同的字段,并且每个列表可能具有彼此不同的字段。
我真的很困惑我应该如何构建我的数据库以实现这一点。任何帮助,将不胜感激。
解决方案
由于字段的数量和字段的类型可能是未知的,并且可能会根据用户而改变,因此将它们硬编码为列可能没有意义。相反,我建议您在此处使用键值对方法。首先定义一个email_fields
看起来像这样的表:
user_id | id | field
1 | 1 | Name
1 | 2 | Email
1 | 3 | Location
1 | 4 | Birthday
上面的用户 1 已将他的电子邮件列表配置为具有四个字段,这些字段是您在问题中作为示例提供的。为这个用户添加更多的字段,或者添加更多的用户,只是意味着在这个表中添加更多的记录,而不改变实际的列。
然后,在另一个表中,email_lists
您将存储电子邮件地址和用户的实际元数据:
id | user_id | field_id | value
1 | 1 | 1 | Sam Plan
1 | 1 | 2 | sam.plan@somewhere.com
1 | 1 | 3 | Gonesville, AL
1 | 1 | 4 | 1967-03-28
换句话说,基本思想是,对于每个用户,每封电子邮件都将表示一组对应于一组键值对的记录。
推荐阅读
- sql - 在子查询中使用自连接
- excel-formula - 如果结果高于阈值,则减去金额,没有重复的公式
- excel - VBA 出现问题,旨在防止在保存时编辑具有值的单元格
- javascript - 使用模式 Bootstrap-vue 在背景上获取事件点击
- python - ast 执行在函数与模块范围内产生不同的结果
- python - 无法在 pycharm 中安装 Torch 或 Torch vision 我正在运行 python 3.6
- string - 如何在 awk 中正确地进行字符串连接
- c# - 如何转储指定我的用户输入的单个 dicom 标签
- python - 一个小程序的python树莓源代码
- javascript - Javascript中的正则表达式 - 需要允许小数作为第一个字符