WEBVTT 00:00:00.400 --> 00:00:04.430 在数据库术语中 一个带关联约束的列 00:00:04.430 --> 00:00:06.080 也被称为外键 00:00:06.080 --> 00:00:09.570 对我来说 这个词听起来总是有点怪异 00:00:09.570 --> 00:00:13.270 就好象它是远在大海另一端的一把锁的钥匙 00:00:13.270 --> 00:00:16.550 外键只是一个表格中的一列或一组列 00:00:16.550 --> 00:00:19.520 该列唯一标识另一个表格中的一行 00:00:19.520 --> 00:00:20.280 一个表格 00:00:20.280 --> 00:00:25.200 可能有两个或以上的外键 实际上这种情况相当常见 00:00:25.200 --> 00:00:29.480 例如 各门课程中学生成绩的一个数据库 00:00:29.480 --> 00:00:33.420 这里我们已经有了一个学生姓名及其 ID 号的表格 00:00:33.420 --> 00:00:36.150 这个 ID 号是主键 因为名字并不具有唯一性 00:00:36.150 --> 00:00:41.640 我们有一个课程表格 其中包括课程名称和课程 ID 00:00:41.640 --> 00:00:43.360 然后还有成绩表格 00:00:43.360 --> 00:00:46.890 这个表格的外键关联另外两个表格 00:00:46.890 --> 00:00:50.040 还是相同的表格 但这次的表格很长 00:00:50.040 --> 00:00:55.270 通常外键会指向关联表格的主键 00:00:55.270 --> 00:00:58.770 这是因为外键的重点在于 00:00:58.770 --> 00:01:03.040 它唯一标识了关联表格的一行 在关联表格中是主键 00:01:03.040 --> 00:01:04.819 这里有个小测验 00:01:04.819 --> 00:01:05.840 这些表格用于 00:01:05.840 --> 00:01:09.650 一个复杂的论坛应用程序 比你们上节课见过的那个复杂 00:01:09.650 --> 00:01:13.850 这个应用可让用户登录并发表评论 00:01:13.850 --> 00:01:16.180 还能对其他用户发表的贴子投票 00:01:16.180 --> 00:01:19.140 看一下这些表格 看看是否清楚哪些列应该是主键 00:01:19.140 --> 00:01:23.430 哪些列应该是与这些主键关联的外键 00:01:23.430 --> 00:01:27.130 在用户表格中 我们有用户名或句柄 00:01:27.130 --> 00:01:29.360 或别名 用户名是全名 00:01:29.360 --> 00:01:32.090 在贴子表格 00:01:32.090 --> 00:01:37.940 有贴子内容 作者的用户名 以及该贴子的 ID 号 00:01:37.940 --> 00:01:41.540 在投票表格 有贴子的 ID 号 00:01:41.540 --> 00:01:45.312 对该贴子投票的某人的用户名 以及1或-1 00:01:45.312 --> 00:01:48.130 这表示他们喜欢还是不喜欢这个贴子 00:01:48.130 --> 00:01:52.400 因此对于这里的每一列来说 如果它应该是那个表格的一个主键 00:01:52.400 --> 00:01:54.350 在那个方框中填写 P 00:01:54.350 --> 00:01:56.400 如果它应该是一个外键 则填写 F 00:01:56.400 --> 00:02:00.480 如果它既不是主键也不是外键 则方框留空 00:02:00.480 --> 00:02:04.330 虽然这个问题没有复选框 但请思考这些表格中 00:02:04.330 --> 00:02:07.440 是否哪个表格有不止一列是主键