一尘不染

SQL数据库-什么时候使用单独的表与现有表的列?

sql

因此,我通常对SQL和数据库还是很陌生的(只为一个最小的站点设计了一个非常简单的数据库),并且我正在尝试找到一种最佳的方法来为一个由大量数据库驱动的站点设计一些模型。因此,以某位用户上传图库为例。我有一个画廊表,其中包含明智的列,例如上载日期,名称等,并且画廊可以属于一个类别,其中类别不会那么多(最多6个)。我应该将类别设为图库表的一列吗?还是有一个单独的类别表,并且类别表和图库表之间存在多对一的关系?我想按照自己的观点进行操作,例如按上传日期对一个类别中的所有画廊进行排序,两者之间在性能/便利性方面有区别吗?将类别设为“图库”表的一列显然比我更容易处理,但我不确定什么是最佳做法。谢谢。


阅读 127

收藏
2021-05-16

共1个答案

一尘不染

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

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

表~~~实体

列~~~属性

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

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

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

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

Table Student:

[PK] Id
[FK] IdClass
Name
Surname

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

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

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

因此,您将创建一个新的Department表,并将其Department.Id用作Student表中的FK。

我希望这有帮助。干杯。

2021-05-16