创建后如何动态地将相同的ID分配给行列表?

时间:2019-02-12 21:51:08

标签: sql sql-server database coldfusion

我正在创建一个新表来定义类和类块之间的新关系,这些关系不过是类组。

以下是工作流程:

用户有一个培训系统,需要能够创建课程块。 这些课程来自课程的清单,并且这些课程在一年中的不同时间,不同的位置进行。有些课程可以是单独的,有些则可以称为“课程单元”或“课程单元”。

系统需要重新设计,因为他们使用的旧架构没有考虑重复项,并且有很多不良数据。

所以这就是我现在正在开发的-

ClassBlocks-具有三个字段的参考表:ClassBlockID,块名称和isActive字段。这是一个带有ClassBlock名称的小表,因为这些名称将被重复使用。

类-具有已发生或将要发生的所有类的表。它具有自己的ClassID,班级名称,与班级所基于的课程相对应的ID,以及班级的开始和结束日期

课程-具有所有可用课程的参考表。

ClassBlockAssociation-新表我正在设计用来更好地定义类与类块之间的关系。一些班级是个别的,其他班级却是块状的。该表的作用是处理成块的情况。它的字段将具有一个BlockAssociation ID作为主键,classID和ClassBlockID。

在sql-server数据库中,我将此表称为具有以下字段的“块”:

    BlockID (PK)
    ClassID (FK with class table)
    CourseID (FK with Course Table)
    CourseBlockID (FK with CourseBlock Table, table which has course block names) 
    BlockAssociationID (Field that serve as an identifier for class blocks)

在Coldfusion中,我有一个cfquery,它会创建一个像这样的新ClassBlock。

有关类列表,我将具有以下代码:

   <cfloop index="i" list="#ClassesList#">
       <cfquery name="insertClassBlocks">
        INSERT INTO ClassBlocks(CourseBlockID, ClassID, CourseID)
        VALUES(CourseBlockID, #i#, CourseID)
      </cfquery>
   </cfloop>

这就是我目前采取的行动,以创建一个已创建的块并将其添加到此表中。类块可以具有相同的名称,但区别在于开始和结束日期。创建这些块时,我需要给它们提供一个ID,该ID可使我轻松地检索该块中的所有类。

因此,当前,当我测试并创建块时,我将得到一个看起来像这样的表。

BlockID  |  ClassID | CourseID | CourseBlockID

1        |    356   |    208       |     1

2        |    357   |    294       |     1

3        |    294   |    256       |     3

4        |    308   |    206       |     3

这适用于我需要做的大多数事情,问题是该表可以具有具有相同CourseBlockID的多个块。我可以同时或在不同时间使用两个具有不同类的块,并且它们需要另一个唯一标识符。

在上面的示例中,我将需要一些唯一的块标识符映射到第1行和第2行,另一个需要一个唯一的块标识符映射到第3行和第4行。插入此块表的时间。我称其为BlockAssociationID,因为它是用于将类与块关联的键。

我不确定为课程模块创建此唯一标识符的最佳方法。

0 个答案:

没有答案