如何将多个相等的引用拟合到表结构中?

时间:2015-02-06 11:01:31

标签: sql data-structures nosql

如何将多个相等的引用放入表结构中?我怎么能这样做?例如:我有同学名单:

1 Peter
2 Jack
3 John
4 Mary
5 Birgit
6 Stella
7 Janus
8 Margo
9 Fred

现在我要定义奖学金。首先,让我们限制每个孩子可能属于一个奖学金。所以我们可以有3个奖学金:

[Peter, Jack]
[John, Mary, Birgit]
[Stella, Janus, Margo, Fred]

所有成员都是平等的,所以他们都应该引用其他成员。是否有更好的方法来定义这种关系,而不仅仅是拥有一对表?像:

1 2
3 4
3 5
4 5
4 3
5 3
5 4
6 7
6 8 
6 9
7 6
7 8 
7 9
8 6
8 7 
8 9
9 6 
9 7
9 8

如果使用对的表,是否更好地描述关系(如上所述),或者仅仅从一种方式到另一种方式链接是否足够?这两种方式有什么好处?

成对表不会将任何成员限制在一个同伴中,但它怎么可能?

我一直在寻找SQL表解决方案,但也许有更好的工具来处理这样的数据结构,所以我也添加了nosql-tag。我正在为这些数据寻找合适的工具,但我很想知道如何在SQL表中使用它。

1 个答案:

答案 0 :(得分:1)

是的,还有另一种方式。如果你有“奖学金”,那么你就没有成对的关系。使用Fellowships的{​​{1}}表进行STart。

然后你会有一个FellowshipsId表。这称为联结表,每个奖学金的每个成员都有一行。它会有这样的行:

FellowshipsKids

你所拥有的是奖学金和孩子之间的m-n关系 - 一个奖学金可以有多个孩子,一个孩子可以参加多个奖学金。联结表是在关系数据库中表示它的标准方法。