我正在尝试创建一个数据库,我的数据库的一部分是, 有不同的团体,其中有成员。 有一些要求,一组必须有一名穿红布的成员,一名穿黄色的成员和一名穿着蓝色的成员。它可以让成员穿着其他颜色,但是对于该组来说是可选的。
我不知道怎么能以优雅的方式做到这一点。 这是我目前的概念:
答案 0 :(得分:0)
您当前的概念是错误的。这似乎意味着“一个团体有一个或多个成员”,“每个成员都穿着红色”,“每个成员都穿着蓝色”,“每个成员都穿着黄色”,“每个成员都是零或多个成员穿着什么”
更正确的解决方案如下(请原谅我的简写符号,它只是在Visio中快速混合):
群组现在直接连接到会员的子类型。每个成员要么穿着红色的成员,穿着蓝色的成员,穿黄色的成员,或穿着别的东西的成员。常见属性位于成员表中。
正如您所看到的,作为数据库解决方案,它仍然不是很优雅。正如草莓在OP的评论中指出的那样,这种逻辑应该可以在应用层而不是在DB中实现。在这种情况下,您可以使用组和成员的简单双表解决方案,成员中的Color属性,以及应用程序中的某个位置一条规则,规定一个组只有拥有这些特定成员才有效。