关系型数据库 http://lib.csdn.net/base/mysql 中的一条记录中有若干个属性, 若其中某一个属性组 (注意是组) 能唯一标识一条记录, 该属性组就可以成为一个主键
比如
学生表(学号, 姓名, 性别, 班级)
其中每个学生的学号是唯一的, 学号就是一个主键
课程表(课程编号, 课程名, 学分)
其中课程编号是唯一的, 课程编号就是一个主键
成绩表(学号, 课程号, 成绩)
成绩表中单一一个属性无法唯一标识一条记录, 学号和课程号的组合才可以唯一标识一条记录, 所以 学号和课程号的属性组是一个主键
成绩表中的学号不是成绩表的主键, 但它和学生表中的学号相对应, 并且学生表中的学号是学生表的主键, 则称成绩表中的学号是学生表的外键
同理 成绩表中的课程号是课程表的外键
定义主键和外键主要是为了维护关系数据库的完整性, 总结一下:
1. 主键是能确定一条记录的唯一标识, 比如, 一条记录包括身份正号, 姓名, 年龄.
身份证号是唯一能确定你这个人的, 其他都可能有重复, 所以, 身份证号是主键.
2. 外键用于与另一张表的关联. 是能确定另一张表记录的字段, 用于保持数据的一致性.
比如, A 表中的一个字段, 是 B 表的主键, 那他就可以是 A 表的外键.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------- 分隔符
再有就是 Django 中如何设计数据库中表的关联了:
我通过看视频弄到了下面的知识:
- from django.db import models
- # Create your models here.
- class UserInfo(models .Model):
- # nid=models .AutoField(primary_key= True )
- username = models.GenericIPAddressField(db_index= True )
- password = models.CharField(max_length=64)
- class DetailedInfo(models .Model):
- nid = models.AutoField(primary_key=True)
- text = models.TextField()
- summary = models.TextField()
- b=models.ForeignKey ("UserInfo",to_field= 'id',on_delete=models.CASCADE)
最主要的就是最后这一行, 三个红色箭头里的东西是必不可少的, 还有前面的 ForeignKey 也是固定的, 第一个箭头是你要关联的表名称, 第二个就是确定自己的外键, 也就是第一个表的主键.
来源: http://www.bubuko.com/infodetail-3438115.html