这对我来说是一个新话题,我已经阅读了几篇文章,但我仍然不清楚,甚至不确定以下问题是否与这篇文章的标题有关。
我的系统向用户发送数据。用户可以选择通过以下方式发送数据:
- XML
- 电子邮件
- 发布
根据用户的选择,需要几个额外但不同的变量。例如,电子邮件地址是通过电子邮件发送数据所必需的,但不是通过 XML 发送的。
假设我们有一个存储“数据传递选择”(XML、电子邮件或邮政)的数据库表,最好将额外需要的变量存储在此表中,这意味着如果选择了 XML,则电子邮件字段将为空在那一行中,或者制作三个新表来存储与“数据传递选择”表中每个可能选择相关联的变量,然后通过“数据传递选择”PK 关联这些表中的条目会更好吗?
或者以何种方式完成并不重要?
出于问题的目的,请忘记我可能已经在别处持有用户电子邮件地址等的事实。
谢谢!
最佳答案
一些 RDBMS ( PostgreSQL for example ),允许表继承。因此,您可以定义 DataDeliveryChoices
,然后创建 3 个继承自它的附加表 DataDeliveryXML
、DataDeliveryEmail
、...
MSSQL 允许您在列中存储(和查询)XML 文档,因此您可以将附加数据存储在 XML 中(不是经典的数据库设计,但如果您需要添加一些数据字段,则非常灵活,无需更改架构).
您添加三个额外表格的方式在 IMO 也是一个可接受的解决方案。
可能性是无限的:)
关于数据库设计 - 规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12478579/