Luc*_* N. 5 sql database-design
所以我对SQL和数据库一般都很陌生(只为最小的站点设计了一个非常简单的),我正在尝试找出为数据库驱动的网站设计一些模型的最佳方法.例如,用户上传了图库.我有一个画廊表,其中有合理的列,如上传日期,名称等,画廊可以属于一个类别,其中不会有那么多(最多像6个).我应该将类别设为图库表的列吗?或者有一个单独的类别表,并在类别和图库表之间有多对一的关系?我想在我的观点中做一些事情,比如按类别按照上传的类别对所有画廊进行排序,它们之间是否存在性能/便利性差异?将类别作为Gallery表的列确实比我更容易处理,但我不确定什么是最佳实践.谢谢.
首先,您需要了解概念上的差异。
根据经验,您可以安全地考虑以下等效项:
表~~~实体
栏目~~~ 属性
因此,当您需要添加与实体(现有表)相关的新数据时,您可以问自己的问题是:
这条数据是实体的属性吗?
如果答案是肯定的,那么您需要一个新列。
例如,假设您有一个描述 Student 实体的表:
Table Student:
[PK] Id
[FK] IdClass
Name
Surname
Run Code Online (Sandbox Code Playgroud)
假设您还想添加每个学生的 GPA。这显然是学生的一个属性,所以可以在Student表中添加GPA列。
但是,如果您希望为每个学生定义系,您将看到系不是学生的属性。该系是一个实体,它存在并且在学生范围之外有自己的属性。
因此,学生的属性是对某个系的隶属关系,而不是系本身。
因此,您将创建一个新的 Department 表,并将其Department.Id用作 Students 表中的 FK。
我希望这有帮助。干杯。