以前在接触数据库的时候,理论知识也没有学习过,做【学生信息管理系统】时是直接去做些简单的操作,后来看了《数据库系统原理》这本书,那个艰深晦涩就不说了,看了几遍之后,终于有些明白。时隔一年多结合现在正在做的【牛腩新闻发布系统】再去翻看的时候,明了许多。
下图是主外键的区别:
主键使用原则:
1.应当是对用户没有意义的
2.永远也不要更新主键
3.不应包含动态变化的数据,如创建时间列
4.应当由计算机自动生成
外键使用原则:
1、 为关联字段创建外键
2、 所有的键都必须唯一
3、避免使用复合键
4、外键总是关联唯一的键字段
结合【新闻发布系统】实例,根据主外键的使用原则,可以设置如下:
建立主外键的好处:
SQL中的主外键就是对表与表之间进行约束,主键保证了数据的唯一性,外键保证的是数据的完整性。
就拿【新闻发布系统】来说,<category>类别表指的是新闻的类别,<news>新闻表指的是各个类别下的新闻,<comment>评论表指的是各条新闻的评论,这里需要指出的是,一个新闻类别下可以有多条新闻,一条新闻下可以有多条评论。如果要删除一个类别的话,需要把这个类别下的多条新闻同时删除,同样,如果要删除一条新闻的话,需要把这条新闻下的多条评论同时删除,这里需要指出的是:类别表和新闻表、新闻表和评论表都是一对多的关系,这就是传说中的级联删除。如果不设置主外键的话,删除一个新闻类别,只能删除一个新闻类别,而这个类别的所有新闻并没有删除,而我们希望的是删除一个类别之后,其下的所有新闻都删除,方便快捷。
步骤一: 在外键表上右击,选择“关系”:
步骤二:在“外键关系”对话框中,点击“添加”,在“表和列规范”项的右侧的…小按钮:
步骤三:在“表和列”对话框中,在主键表下方选择外键列所在的表和该外键列:
步骤四:在外键表下方,只要选择表中与主键表的列相对应的列就可以:
步骤五:如果还有外键关系需要建立,继续点击外键关系表里的“添加”即可。
【总结】其实,最关键的还是要弄清哪个是主表,哪个是外键表,然后直接在外键表上右击,选择“关系”即可建立两表的主外键关系,当然,可根据需要,一个表中可以有多个外键。刚开始碰到两表之间建立主外键关系的时候,建了好几次都没有成功,通过几次操作之后,就轻车熟路了。不建立主外键的好处就是数据可以随意写入或删除,但这样的同时会造成数据容易出现错误,造成数据冗余;建立主外键关系既可以保证数据的唯一性和完整性,又可以增加ER图的可读性,所以要合理利用好主外键关系。