预警-一开始可能出问题了。不止一件事。我提出的问题之外的任何其他帮助将不胜感激:)

同样,admin_tbl也可以忽略。它只是站点管理员的用户名/密码。

目的(和问题):创建两个关系表。我希望使用HTML表单插入以下信息:

albumName-探索
名称-死海
timeDate-2015-12-21
评论-以色列死海的美丽风景。
上传图片-(选择图片的按钮)

我已经设法创建代码(php和sql文件)以将信息上载到数据库中,并将图像上载到“ Uploads”文件夹中。但是,目标是使每个相册都具有一个ID(albumID),并能够上传多个图像并成为一个相册的一部分(当然还有多个相册,每个相册中都有不同的图像)。你能帮我吗?

到目前为止,我有:

'image_tbl'--用于存储图像路径和表单信息(包括专辑名称)的表

'album_tbl'--存储相簿ID和相簿名称的表格

问题(我遇到):

image_tbl-如您所见,我插入数据库中的每个图像都有一个ID,该ID是自动递增的。显然,自动递增的id(不确定官方术语)必须是主键。但是,要使AlbumName(在此表中)在album_tbl中具有关系,不是必须是主键吗?

mysql - 使用MySQL了解主键和关系数据库(phpmyadmin)-LMLPHP

album_tbl-在此表中,我具有albumID和albumName。我想要的是在插入带有albumName的表单时(例如,“ Exploration”),还要为其提供albumID。因此,如果我打印一个特定的“ albumID”,则将显示放入其中的每个图像。

mysql - 使用MySQL了解主键和关系数据库(phpmyadmin)-LMLPHP

希望一切都是可以理解的。

P.s.如果您需要任何其他信息,请询问,如果您有建议使此操作更容易/更有效,请告诉我!

P.p.s如果可以快速完成,那么有人可以在我的表格上下文中解释“索引”选项的含义(以便可以轻松理解),谢谢!

最佳答案

TL; DR不需要声明“关系”即外键(FK)进行查询。但这是一个好主意。当您这样做时,FK可以引用主键(PK)或任何其他UNIQUE列。



在某些方法和产品中,PK和FK被错误地称为“关系”。应用程序关系由表表示。 (基本表和查询结果。)PK和FK是约束条件:它们告诉DBMS仅某些情况会出现,因此当您犯某些错误时它可以注意到。它们不是关系,它们在每种数据库状态和应用程序情况下都是正确的陈述。 You do not need to know constraints to update and query a database.

Just know what every table means.基表具有DBA赋予的含义,可以告诉您其行的含义。查询还具有告诉您其行含义的含义。将查询含义与基本表含义组合在一起,以及如何将其结果值与基本表值和条件组合在一起。


image_tbl-图片[Id]在名为[albumName]的相册中,名为[name],日期为[dateTime],并有评论[comment]
album_tbl-相册[albumID]被命名为[albumName]


您不必声明任何PK / UNIQUE或FK!但这是一个好主意,因为这样DBMS可以禁止不可能/错误的更新。 PK / UNIQUE表示其列的子行值必须仅出现一次。 FK表示,其列的子行值必须在其引用表中显示为PK / UNIQUE子行值。这些限制适用于基表的事实意味着某些限制适用于查询结果。但是这些查询结果的含义是根据查询的表和条件组合而定的,与这些限制无关。例如,专辑名称是否唯一,


image_tbl JOIN album_tbl USING albumName-图片[Id]在名为[albumName]的相册中,命名为[name],日期为[dateTime],并具有注释[comment],并且相册[albumID]名为[albumName]


唯一的问题是,如果专辑名称不是唯一的,那么知道图像专辑的名称并不会告诉您它在哪个专辑中。您只知道它在该名称的相册中。另一方面,如果专辑名称是唯一的,则不需要album_tbl albumID。

因此,如果专辑名称是唯一的,请在album_tbl中声明albumName UNIQUE。然后在image_tbl中,通过album_tbl的PK / UNIQUE列来标识专辑。由于album_id可能仅出于识别专辑的目的而存在,因此通常我们希望选择它。然后在image_tbl中将该列声明为引用Album_tbl的FK。

PS索引通常会花费一些时间和空间来加快查询速度。表声明中的主键声明会自动声明一个索引。索引PK,UNIQUE和FK列集是一个好主意。

关于mysql - 使用MySQL了解主键和关系数据库(phpmyadmin),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34385391/

10-11 17:22