Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sqlserver中的数据库表关系_Sql Server_Database_Database Design_Foreign Keys_Entity Relationship - Fatal编程技术网

Sql server sqlserver中的数据库表关系

Sql server sqlserver中的数据库表关系,sql-server,database,database-design,foreign-keys,entity-relationship,Sql Server,Database,Database Design,Foreign Keys,Entity Relationship,我的数据库中有一个作业(作业)表和一个工具表。刀具表分为两部分,一部分是类别(刀具类别),另一部分是刀具数据(常用刀具) 现在我想问的是,我有一个工作表单,在这个表单中,我必须选择一些下拉字段,这些字段是从工具(通用工具)中为不同类别(工具类别)列出的。我在下面给出两种方法。请建议哪一个更好,为什么 方法1 我已经创建了一个表“tools\u in\u jobs”,其中包含三个字段,我们可以通过该表知道为job form中的哪个类别选择了哪个工具值 方法2 另一种方法是,我们可以为每个工具创建

我的数据库中有一个作业(作业)表和一个工具表。刀具表分为两部分,一部分是类别(刀具类别),另一部分是刀具数据(常用刀具)

现在我想问的是,我有一个工作表单,在这个表单中,我必须选择一些下拉字段,这些字段是从工具(通用工具)中为不同类别(工具类别)列出的。我在下面给出两种方法。请建议哪一个更好,为什么

方法1

我已经创建了一个表“tools\u in\u jobs”,其中包含三个字段,我们可以通过该表知道为job form中的哪个类别选择了哪个工具值

方法2

另一种方法是,我们可以为每个工具创建单独的表,而不是为所有工具创建公共表,如下图所示。但这里需要注意的是,这两个表(job_教员和job_专业知识)只是一个例子,可能有5到6个这样的表,因为我使用的是来自不同类别的5到6个工具


如果还有其他建议,也请提出来。

我真的不明白您想要实现什么,但我能说的是,方法2一点也不好。每个工具一张桌子?哪些字段都相同?不!这是一个巨大的开销,相当于程序中的“重复代码”。我认为可维护性、可扩展性等也非常糟糕

然后来探讨一个问题——我不明白为什么“工作中的工具”表与工具和类别有关系——与工具的关系不够吗?(看起来像是无用的冗余)或者这个类别的含义是什么


正如我所说的,你真的需要对你想要实现的目标做出更好的解释。然后我将进行编辑。

当然方法1是首选方法,但从作业中删除工具类别id,以及作业中的工具和工具类别之间的关系,以使设计正常化


方法2意味着每次添加新工具时都要创建一个新表,编写和维护更多的代码,维护更多的表和索引,并使用更多的存储。

是的,您是对的,我们可以从作业表中的工具中删除工具类别id,因为它已经与常用工具相关,反过来又与类别相关。谢谢你的回复,因为我在这里得到了答案。在tenhouse的建议下,我已经做出了这些改变。