所以我对SQL和数据库一般都很陌生(只为最小的站点设计了一个非常简单的),我正在尝试找出为数据库驱动的网站设计一些模型的最佳方法。例如,用户上传了图库。我有一个画廊表,其中有合理的列,如上传日期,名称等,画廊可以属于一个类别,其中不会有那么多(最多像6个)。我应该将类别设为图库表的列吗?或者有一个单独的类别表,并在类别和图库表之间有多对一的关系?我想在我的观点中做一些事情,比如按类别按照上传的类别对所有画廊进行排序,它们之间是否存在性能/便利性差异?将类别作为Gallery表的列确实比我更容易处理,但我不确定什么是最佳实践。感谢。
答案 0 :(得分:2)
如果类别和库之间存在一对多关系,则希望类别为单独的表。
答案 1 :(得分:2)
首先,您需要了解概念上的差异。
根据经验,您可以安全地考虑以下等值:
表~~~实体
列~~~属性
因此,当您需要添加与实体(现有表格)相关的新数据时,您可以问自己的问题是:
这段数据是实体的属性吗?
如果答案是肯定的,那么您需要一个新列。
例如,假设您有一个描述学生实体的表:
Table Student:
[PK] Id
[FK] IdClass
Name
Surname
假设您还要添加每个学生的GPA。这显然是学生的一个属性,因此您可以在学生表中添加GPA列。
如果您希望为每个学生定义部门,您将看到部门不是学生的属性。该部门是一个实体,它存在并且具有自己的属性 在 范围内。
因此,学生的属性是某个部门的隶属关系,而不是部门本身。
因此,您将创建一个新的Department表,并在Students表中使用Department.Id
作为FK。
我希望这会有所帮助。欢呼声。
答案 2 :(得分:1)
如有疑问,请使用单独的表格。
它对速度没有那么大的影响,你将获得更多的控制权。