使用MySQL(phpmyadmin)了解主键和关系数据库
预警-从一开始就可能出现问题。不止一件事。我将非常感谢您在我提出的问题之外提供的任何其他帮助:) 此外,管理tbl也可以忽略。它只是站点管理员的用户名/密码。 目标(和问题):创建两个关系表。使用我的HTML表单,我希望能够插入以下信息: albumName-探索使用MySQL(phpmyadmin)了解主键和关系数据库,mysql,database,phpmyadmin,foreign-keys,primary-key,Mysql,Database,Phpmyadmin,Foreign Keys,Primary Key,预警-从一开始就可能出现问题。不止一件事。我将非常感谢您在我提出的问题之外提供的任何其他帮助:) 此外,管理tbl也可以忽略。它只是站点管理员的用户名/密码。 目标(和问题):创建两个关系表。使用我的HTML表单,我希望能够插入以下信息: albumName-探索 名称-死海 时间日期-2015-12-21 评论-以色列死海的美丽风景。 上传图像-(选择图像的按钮) 我已经设法创建代码(php和sql文件)将信息上传到数据库中,并将图像上传到“上传”文件夹中。但是,目标是每个相册都有一个ID(a
名称-死海
时间日期-2015-12-21
评论-以色列死海的美丽风景。
上传图像-(选择图像的按钮) 我已经设法创建代码(php和sql文件)将信息上传到数据库中,并将图像上传到“上传”文件夹中。但是,目标是每个相册都有一个ID(albumID),并且能够上载多个图像并成为一个相册的一部分(当然还有多个相册,每个相册中都有不同的图像)你能帮我做这个吗? 到目前为止我拥有的: “image_tbl”-存储图像路径和表单信息(包括相册名称)的表 “album_tbl”-存储albumID和albumName的表 问题(我遇到过): image_tbl-正如您所看到的,我插入数据库的每个图像都有一个id,它是自动递增的。显然,自动递增的id(不确定官方术语)必须是主键。但是,要使albumName(在此表中)在album_tbl中具有关系,它不需要是主键吗 album_tbl-在此表中,我有albumID和albumName。我想要的是,当一个表单插入一个albumName(例如“Exploration”)时,它也被赋予albumID。因此,如果我打印一个特定的“albumID”,那么放入其中的每个图像都会显示出来 希望一切都可以理解 另外,如果你需要任何额外的信息,请询问,如果你有更简单/更有效的建议,请告诉我
p.p.s如果可以很快完成,请有人解释一下在我的表格上下文中“索引”选项是什么(这样很容易理解),谢谢 欢迎使用关系数据库。
关系数据库的想法是让所有数据相互关联,但避免数据复制。这称为规范化
在您的示例中,您正在两个表中复制“Album Name”名称,这是不必要的。您要做的是将列Album Name(在image\u tbl中)更改为Album ID,并在
Album\u ID
image\u tbl
上添加外键到Album\u ID
<代码>相册\u tbl TL;DR您不需要声明要查询的“关系”,即外键(FK)。但这是个好主意。当您这样做时,FK可以引用主键(PK)或任何其他唯一列
PKs和FKs在某些方法和产品中被错误地称为“关系”。应用程序关系由表表示。(基表和查询结果)PKs和FK是约束:它们告诉DBMS只能出现某些情况,因此当您出现某些错误时,DBMS会注意到。它们不是关系,它们是每个数据库状态和应用程序情况中的真实语句 基表具有DBA给定的含义,可以告诉您它们的行的含义。查询的含义还可以告诉您其行的含义。查询含义是从基表含义组合而来的,与它们的结果值是如何从基表值和条件组合而来的并行
——image[Id]位于名为[albumName]的相册中,名为[name],日期为[dateTime],并有注释[comment]image\u tbl
——相册[albumID]命名为[albumName]相册\u tbl
——image[Id]位于名为[albumName]的相册中,名为[name],日期为[dateTime],并有注释[comment],相册[albumID]名为[albumName]image\u tbl加入相册\u tbl使用albumName
PS索引通常以牺牲一些时间和空间为代价来加快查询速度。表声明中的主键声明会自动声明索引。索引PK、UNIQUE和FK列集是个好主意。关系模型不关心值是id还是字符串。你的建议与正常化无关。但是如果相册名称在相册中不是唯一的/PK,则FK应该是相册id。