MySql数据库里,为什么要设置主键和外键,它们之间有什么联系?请教下。
3个回答
展开全部
通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply
先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是
thread.php?id=1 表示我要访问的是帖子id是1 的帖子~
再来说说外键,当我们删除某个帖子的时候,需要执行另一个操作,就是删除所有回帖,如果正常情况下,我们需要执行两次delete操作(thread和 reply),这时候如果存在外键,例如,在reply 表里面建立一个指向thread表的主键(id)的外键(这个外键绑的字段,必须是对应帖子的id),并指定响应 delete ,那你在删除 thread 的时候,mysql 自己会帮你把 reply 表中这个帖子的回复都删掉,而不需要你手动再去执行一次reply表的delete操作~
至于两者之间的关系,在刚才的例子中,reply 表的外键,指向的就是 thread 表的主键~~
先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是
thread.php?id=1 表示我要访问的是帖子id是1 的帖子~
再来说说外键,当我们删除某个帖子的时候,需要执行另一个操作,就是删除所有回帖,如果正常情况下,我们需要执行两次delete操作(thread和 reply),这时候如果存在外键,例如,在reply 表里面建立一个指向thread表的主键(id)的外键(这个外键绑的字段,必须是对应帖子的id),并指定响应 delete ,那你在删除 thread 的时候,mysql 自己会帮你把 reply 表中这个帖子的回复都删掉,而不需要你手动再去执行一次reply表的delete操作~
至于两者之间的关系,在刚才的例子中,reply 表的外键,指向的就是 thread 表的主键~~
展开全部
一家之言
设置主键
1) 可以很真实的反应数据模型的特性,譬如学生表里面的学号,主键学号是唯一表征表里面一行数据的特性;
2) 主键可以防止逻辑上的脏数据。譬如你已经存在了学号002,就不能再插入一个学号为002的学生了。
3) 方便查找,通过主键可以快速的定位数据库的记录,减少扫描的记录数
设置外键
1)保证数据完整性。譬如学生成绩表里面,你要插入成绩,首先必须确保有这个学号。
2)表征数据库表之间实体之间的联系。譬如学生成绩表和学生表之间可以通过学号联系起来,也是真实世界的反应。
设置主键
1) 可以很真实的反应数据模型的特性,譬如学生表里面的学号,主键学号是唯一表征表里面一行数据的特性;
2) 主键可以防止逻辑上的脏数据。譬如你已经存在了学号002,就不能再插入一个学号为002的学生了。
3) 方便查找,通过主键可以快速的定位数据库的记录,减少扫描的记录数
设置外键
1)保证数据完整性。譬如学生成绩表里面,你要插入成绩,首先必须确保有这个学号。
2)表征数据库表之间实体之间的联系。譬如学生成绩表和学生表之间可以通过学号联系起来,也是真实世界的反应。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据库是通过相同的名称来互相联系的,主键和从键有相同的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询