SQL 服务器:数据库设计 - 复合主键

SQL Server : database design - composite primary key

我需要你关于如何实施 SQL 服务器 table 关系的建议。

  1. 我有很多客户,每个客户都有一个唯一的id(customerID)

  2. 每个客户可以关联多个类别(categoryID

  3. 每个客户可以有多个子类别 (subCategoryID)

  4. 当客户登录时,我知道它的 CustomerIDCategoryIDSubCategoryID

  5. 客户提前计划来年(12月)每周工作多少小时 2014 计划 2015 的 52 周)

  6. 每天都有客户报告他们是否工作或休息一天。

我想过有一个名为 WeeklyPlanning 的 table,其列为:

CustomerID, CategoryID, SubCategoryID, Year, WeekNumber, WorkingHoursPlan

和另一个名为 DailyWorkingHours 的 table,列数:

Dates, WorkingHours

我的问题:

我不知道如何将这两个table组合在一起,使用复合键? (CustomerID, CategoryID, SubCategoryID, Year, WeekNumber) 或者可能在 WeeklyPlanning 中生成一个唯一的 PK,它将在 DailyWorkingHours?

中用作 FK

我正在寻找实现它的最佳方法。

谢谢

真的想要为这两个 table 之间的每个 JOIN 指定 FIVE 列的值吗?如果您有一个由五列组成的复合主键,这就是您必须要做的 - 您还需要 所有这些列 child table ,并且在执行 JOIN 时,您需要始终指定 所有五列 .....哎哟 ......

如果不是 - 使用 WeeklyPlanningWeeklyPlanningID INT IDENTITY(1,1))中的 surrogate 列来显着简化您的生活!