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

Luc*_* N. 5 sql database-design

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

nes*_*oop 6

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

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

表~~~实体

栏目~~~ 属性

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

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

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

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

Table Student:

[PK] Id
[FK] IdClass
Name
Surname
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

我希望这有帮助。干杯。


And*_*eas 5

如果类别和画廊之间存在一对多关系,则您希望类别是一个单独的表。