当前位置: 首页 > 面试题库 >

多对多关系?

钱志
2023-03-14
问题内容

伙计们,我正在努力为我的公司制作一个简单的票证生成系统,以吸引人。目前,我的MSSQL数据库中有一个名为的表tblTicket,另一个名为的表tblEngineer

我的应用程序是C#Windows窗体,因此在新的票证生成窗体上,我有许多文本框和一个用于分配工程师的comboBox,由填充tblEngineer。生成票证后,以这种形式输入的所有信息都将tblTicketEngineerIDfrom一起存储tblEngineer

效果很好,但是后来我的客户要求我添加选项,以便可以在一张票上分配3名工程师。

将来,我将必须开发一个“工程师模块”,在该模块中,工程师将只能看到分配给他的票证。它将包括用于身份验证的登录系统。因此,如果生成新票证并将其分配给3个工程师,则只有3个工程师应该能够看到该票证,而其他工程师则不能。

我应该如何采取这种方法?如果只有一名工程师,那真的很容易。现在,我需要制作多对多表格,例如tblAssignedEng票证ID和多个工程师ID吗?被称为外键?我对SQL没有太多的经验,所以我在这里有点挣扎,任何帮助将不胜感激。


问题答案:

作为示例,标准做法是…

您有一个“ tblEngineer”表…

 tblEngineer
 -----------
 (PK) EngineerId
 EngineerName

还有一个“ tblTicket”表…

 tblTicket
 ---------
 (PK) TicketId
 TicketDetails

现在,您添加了一个称为“ tblEngineerTickets”(或类似名称)的链接表,该表同时引用了工程师及其票证的ID。

 tblEngineerTickets
 ------------------
 (PK) EngineerTicketId
 (FK) EngineerId
 (FK) TicketId

这样一来,您可以将所有故障单详细信息和工程师详细信息分开保存,并仅使用ID进行链接…链接表如下所示…

  EngineerId | TicketId
 ------------+----------
      1      |    1
      1      |    2
      1      |    3
      2      |    1
      2      |    2
      2      |    3

这样,您可以将多个工程师分配给一个票证,和/或将多个票证分配给一个工程师。

这是最佳做法,它为您提供了最大的扩展机会。如果您只是向现有的工程师表中添加字段,例如“ Ticket1”,“ Ticket2”,“
Ticket3”等,那么您实际上将对代码施加限制,并且可能必须继续进行下去在代码中添加列。



 类似资料:
  • 问题内容: 我目前正在使用ActiveAndroid,并且在过去的几个小时里一直在尝试建立多对多关系,但是我还是无法正常工作。我希望你能帮助我: 我有“学生”和“课程”的模型,一个学生可以有很多课程,而一个课程有很多学生。基本上,这就是我在“ StudentCourse”模型中所拥有的: 现在,我要做的是使用以下代码获取“课程X中的所有学生”: 但是我收到以下错误: java.lang.Class

  • 在本章中,让我们了解和学习多对多的关系。要表示多对多关系,必须创建第三个表(通常称为联接表),将多对多关系分解为两个一对多关系。 为此,我们还需要添加一个联接表。 下面先添加一个表。表的定义如下所示 - 现在创建一个多对多的关系。假设有多个作者在多个项目上工作,反之亦然。 如您所知,我们在中有一个字段,所以为它创建了一个表。但现在不再需要这个字段了。 选择字段,然后按下删除 按钮,将看到以下消息。

  • 我还想知道如何定义每个模型上的关系--你是否需要或者是否可以只在用户上定义关系?

  • 比如我们要关联用户和角色之间的关系,就要用到多对多。多对多需要一张中间表来做关联。 定义 多对多关联会用到的注解: @ManyToMany、@JoinFromMiddle、@JoinToMiddle、@AutoSelect、@AutoInsert、@AutoUpdate、@AutoSave、@AutoDelete 如 imi-demo 中代码所示,类定义了一个$userRole属性和$role属性

  • 多对多关联 关联定义 例如,我们的用户和角色就是一种多对多的关系,我们在User模型定义如下: <?php namespace app\index\model; use think\Model; class User extends Model { public function roles() { return $this->belongsToMany('R