SQL Server:数据库设计 - 复合主键

时间:2015-01-05 21:58:11

标签: sql-server database-design composite-primary-key compound-key

我需要您关于如何实现SQL Server表关系的建议。

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

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

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

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

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

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

  7. 我想到了一个名为WeeklyPlanning的表格,其中包含列:

    CustomerID, CategoryID, SubCategoryID, Year, WeekNumber, WorkingHoursPlan
    

    另一个名为DailyWorkingHours的表格,其中包含以下列:

    Dates, WorkingHours
    

    我的问题:

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

    我正在寻找实现这一目标的最佳方式。

    感谢

1 个答案:

答案 0 :(得分:2)

真的是否要为这两个表之间的每个JOIN指定五个列的值?如果您有一个由五列组成的复合主键,那么您必须做的就是 - 您的子表中还需要所有这些列,并且您需要在进行JOIN时总是指定所有五列 ......哎......

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