1

假设我有一组某个类别的值,例如体育活动。

这些值可能是:

  1. 跑步
  2. 篮球
  3. 足球
  4. 冰球
  5. 步行
  6. 棒球
  7. 篮球

现在让我们假设我有一大群人。每个人在一年中的每个季节都参加一系列体育活动。所以A人可能在冬天打篮球和跑步,在春天和夏天打棒球和跑步,在秋天踢足球和跑步。B 人可能在春、秋、夏步行和跑步,在冬天打篮球和冰球等。

换句话说,每个人有 4 组(或数组)体育活动(称为最喜欢的景点活动),每个季节一个。

我试图找出将这些值集有效地映射到关系数据库中的个人的最佳方法。我假设我将有一张人桌和一张体育活动桌。但是我如何表示来自体育活动表的重叠值集并将它们映射到人员表中的个人?

4

3 回答 3

3

您将活动映射到一个人。您的表将引用活动和人员,主键将是这两者的组合。

person <----- personActivity -----> activity

如果要添加季节:

person, activity, season

personActivitySeasn
于 2013-05-07T14:41:57.210 回答
1

您还将有一个季节表(可能只有四个值)。然后你会有一个PersonActivitySeasons包含如下列的表:

  • PersonActivitySeasonId
  • 个人身份
  • 季节 ID
  • 活动 ID
  • 活动日期

这是最标准化的格式。在实践中,您还可以制作季节列:

  • PersonActivitySeasonId
  • 个人身份
  • 活动 ID
  • 是冬天
  • 是春天
  • 是夏天
  • 是秋天

我倾向于采用第一种方法,因为我可以为每个季节的每条记录包括有效日期和结束日期,并且更容易跟踪人们进出活动。此外,如果这对您有用,它将允许“不合格”季节。

于 2013-05-07T14:49:12.260 回答
0

您可以创建第三个表“活动”,其中包含人员 id(人员表中的 PK)和运动 id(运动表中的 PK)。

于 2013-05-07T14:45:19.070 回答