伙计们,我正在尝试为我的公司制作一个简单的票证生成系统,作为一个帮助。现在,我的 MSSQL 数据库中有一个名为 的表tblTicket和另一个名为 的表。tblEngineer
我的应用程序采用 C# Windows 窗体,因此在新的票证生成窗体上,我有许多文本框和一个用于分配工程师的组合框,该工程师由tblEngineer. 生成票证后,在此表单中输入的所有信息都将存储在fromtblTicket中。EngineerIDtblEngineer
它运行得很好,但后来我的客户要求我添加选项,以便可以在一张票上分配 3 名工程师。
将来,我将不得不开发一个“工程师模块”,其中工程师将只能看到分配给他的票证。它将包括用于身份验证目的的登录系统。因此,如果生成了一个新票证并分配给 3 名工程师,则只有 3 名工程师应该能够看到该票证,而其他人则看不到。
我应该如何采用这种方法?如果只有一名工程师,这真的很容易。现在我需要制作一个多对多表,比如tblAssignedEng包含工单 ID 和多个工程师 ID 的表吗?作为外键引用?我对 SQL 没有太多经验,所以我在这里有点挣扎,任何帮助将不胜感激。
标准做法是这样的,例如......
你有一个“tblEngineer”表......
tblEngineer
-----------
(PK) EngineerId
EngineerName
Run Code Online (Sandbox Code Playgroud)
还有一个“tblTicket”表......
tblTicket
---------
(PK) TicketId
TicketDetails
Run Code Online (Sandbox Code Playgroud)
现在,您添加一个名为“tblEngineerTickets”(或类似)的链接表,该表引用工程师及其票证的 ID...
tblEngineerTickets
------------------
(PK) EngineerTicketId
(FK) EngineerId
(FK) TicketId
Run Code Online (Sandbox Code Playgroud)
这样,您就可以单独保存所有工单详细信息和工程师详细信息,并仅使用 Id 链接它们...链接表看起来像这样...
EngineerId | TicketId
------------+----------
1 | 1
1 | 2
1 | 3
2 | 1
2 | 2
2 | 3
Run Code Online (Sandbox Code Playgroud)
这样,您可以将多个工程师分配给一张工单,和/或将多个工单分配给一名工程师。
这是最佳实践,它为您提供了最多的扩展机会。如果您只是将字段添加到现有的工程师表中,其中包含“Ticket1”、“Ticket2”、“Ticket3”等...您将有效地对代码进行限制,并且可能您必须继续输入到添加列的代码。
| 归档时间: |
|
| 查看次数: |
2511 次 |
| 最近记录: |