Lee*_*ith 2 sql t-sql sql-server database-design data-modeling
我在为以下场景创建数据库架构时遇到问题:
(我不是创建一个约会网站,而只是以此为例)
用户登录到约会网站并获得他们希望日期所具有的头发颜色的多重选择:
这很容易用以下三个表进行建模:
表:
用户密钥}
HairColour {key}
UserHairColour {UserKey} {HairColourKey}
但是,用户还可以选择"任意",这意味着他们不关心头发颜色,所有头发颜色都应包含在选择中.
如何为用户提供"任何"选项?
我显然可以选择所有的头发颜色并将它们推入'UserHairColour'但是如果我将来需要添加新的头发颜色怎么办?
小智 9
UserHairColour表中缺少此特定用户的任何记录将表明他们不关心头发颜色.
没有决定表明他们没有偏好.显然,这并不意味着他们希望他们的约会根本没有头发颜色.
我没有看到这里需要单独的值或任何额外的表设计.您拥有的东西可以让您以简单的方式实现目标.
编辑:作为对具有任何额外值的建议解决方案的反应.
"ANY"的概念在概念上会干扰其他选择.我们正在讨论为用户提供多种选择,任何一种选择,并允许他们选择多种选择.因此,用户可以在技术上选择ANY以及其他选项,使得不清楚什么是优先级 - 任何或特定选项.我认为简单地没有记录作为ANY指标的方法更清楚 - 它只能以一种方式解释.没有记录 - 没有首选值.你显然不能用另一种方式解释它 - 没有首选值 - 用户不希望这个值存在 - 这将使透明的头发颜色毫无意义.你可以说它根本就没有毛发,但我建议有一个单独的选项或一个单独的问题.