SQL数据库 - 何时使用单独的表vs现有的列?

时间:2014-03-24 18:42:55

标签: sql database-design

所以我对SQL和数据库一般都很陌生(只为最小的站点设计了一个非常简单的),我正在尝试找出为数据库驱动的网站设计一些模型的最佳方法。例如,用户上传了图库。我有一个画廊表,其中有合理的列,如上传日期,名称等,画廊可以属于一个类别,其中不会有那么多(最多像6个)。我应该将类别设为图库表的列吗?或者有一个单独的类别表,并在类别和图库表之间有多对一的关系?我想在我的观点中做一些事情,比如按类别按照上传的类别对所有画廊进行排序,它们之间是否存在性能/便利性差异?将类别作为Gallery表的列确实比我更容易处理,但我不确定什么是最佳实践。感谢。

3 个答案:

答案 0 :(得分:2)

如果类别和库之间存在一对多关系,则希望类别为单独的表。

答案 1 :(得分:2)

首先,您需要了解概念上的差异。

根据经验,您可以安全地考虑以下等值:

  

表~~~实体

     

列~~~属性

因此,当您需要添加与实体(现有表格)相关的新数据时,您可以问自己的问题是:

  

这段数据是实体的属性吗?

如果答案是肯定的,那么您需要一个新列。

例如,假设您有一个描述学生实体的表:

Table Student:

[PK] Id
[FK] IdClass
Name
Surname

假设您还要添加每个学生的GPA。这显然是学生的一个属性,因此您可以在学生表中添加GPA列。

如果您希望为每个学生定义部门,您将看到部门不是学生的属性。该部门是一个实体,它存在并且具有自己的属性 范围内。

因此,学生的属性是某个部门的隶属关系,而不是部门本身。

因此,您将创建一个新的Department表,并在Students表中使用Department.Id作为FK。

我希望这会有所帮助。欢呼声。

答案 2 :(得分:1)

如有疑问,请使用单独的表格。

它对速度没有那么大的影响,你将获得更多的控制权。

相关问题