SQL Server中的数据库表关系

时间:2013-04-11 11:26:09

标签: sql-server database database-design foreign-keys entity-relationship

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

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

方法1

我创建了一个表“tools_in_jobs”,其中包含三个字段,我们可以知道哪个工具值选择了作业形式的哪个类别。

enter image description here

方法2

另一种方法是代替所有工具的公共表,我们可以为每个工具创建单独的表,如下图所示。但有一点需要注意的是,这两个表(job_faculty和job_expertise)只是例如可以有5到6个这样的表,因为我使用的是来自不同类别的5到6个工具。

enter image description here

如果有任何其他建议,请另外建议。

2 个答案:

答案 0 :(得分:2)

我真的不明白你想要完成什么,但我能说的是方法2并不好。每个工具的表格?哪个都有相同的字段?呐!这是一个巨大的开销,可与程序中的“重复代码”相媲美。我认为可维护性,可扩展性等也非常糟糕。

然后接近一个 - 我不明白为什么“tools_in_job”表与工具和类别有关系 - 工具的那个就不够了吗?(看起来像无用的冗余)或者什么是这个类别的含义?

正如我所说,你真的需要更好地解释你想要完成的事情。我会编辑。

答案 1 :(得分:0)

当然,方法1是首选方法,但是从工作中删除tool_category_id以及tools_in_job和tool_category之间的关系以规范化设计。

方法2意味着每次添加新工具,编写和维护更多代码,维护更多表和索引以及使用更多存储空间时创建新表。