牛腩新闻发布系统——主外键关系的设置方法
2015-07-31 21:12
253 查看
以前在接触数据库的时候,理论知识也没有学习过,做【学生信息管理系统】时是直接去做些简单的操作,后来看了《数据库系统原理》这本书,那个艰深晦涩就不说了,看了几遍之后,终于有些明白。时隔一年多结合现在正在做的【牛腩新闻发布系统】再去翻看的时候,明了许多。
下图是主外键的区别:
![](http://img.blog.csdn.net/20150731210741808?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
主键使用原则:
1.应当是对用户没有意义的
2.永远也不要更新主键
3.不应包含动态变化的数据,如创建时间列
4.应当由计算机自动生成
外键使用原则:
1、
为关联字段创建外键
2、
所有的键都必须唯一
3、避免使用复合键
4、外键总是关联唯一的键字段
结合【新闻发布系统】实例,根据主外键的使用原则,可以设置如下:
![](http://img.blog.csdn.net/20150731211638709?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
建立主外键的好处:
SQL中的主外键就是对表与表之间进行约束,主键保证了数据的唯一性,外键保证的是数据的完整性。
就拿【新闻发布系统】来说,<category>类别表指的是新闻的类别,<news>新闻表指的是各个类别下的新闻,<comment>评论表指的是各条新闻的评论,这里需要指出的是,一个新闻类别下可以有多条新闻,一条新闻下可以有多条评论。如果要删除一个类别的话,需要把这个类别下的多条新闻同时删除,同样,如果要删除一条新闻的话,需要把这条新闻下的多条评论同时删除,这里需要指出的是:类别表和新闻表、新闻表和评论表都是一对多的关系,这就是传说中的级联删除。如果不设置主外键的话,删除一个新闻类别,只能删除一个新闻类别,而这个类别的所有新闻并没有删除,而我们希望的是删除一个类别之后,其下的所有新闻都删除,方便快捷。
步骤一: 在外键表上右击,选择“关系”:
![](http://img.blog.csdn.net/20150731215648871?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
步骤二:在“外键关系”对话框中,点击“添加”,在“表和列规范”项的右侧的…小按钮:
![](http://img.blog.csdn.net/20150731220251322?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
步骤三:在“表和列”对话框中,在主键表下方选择外键列所在的表和该外键列:
![](http://img.blog.csdn.net/20150731220230632?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
步骤四:在外键表下方,只要选择表中与主键表的列相对应的列就可以:
![](http://img.blog.csdn.net/20150731220608132?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
步骤五:如果还有外键关系需要建立,继续点击外键关系表里的“添加”即可。
![](http://img.blog.csdn.net/20150731220528659?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
【总结】其实,最关键的还是要弄清哪个是主表,哪个是外键表,然后直接在外键表上右击,选择“关系”即可建立两表的主外键关系,当然,可根据需要,一个表中可以有多个外键。刚开始碰到两表之间建立主外键关系的时候,建了好几次都没有成功,通过几次操作之后,就轻车熟路了。不建立主外键的好处就是数据可以随意写入或删除,但这样的同时会造成数据容易出现错误,造成数据冗余;建立主外键关系既可以保证数据的唯一性和完整性,又可以增加ER图的可读性,所以要合理利用好主外键关系。
下图是主外键的区别:
主键使用原则:
1.应当是对用户没有意义的
2.永远也不要更新主键
3.不应包含动态变化的数据,如创建时间列
4.应当由计算机自动生成
外键使用原则:
1、
为关联字段创建外键
2、
所有的键都必须唯一
3、避免使用复合键
4、外键总是关联唯一的键字段
结合【新闻发布系统】实例,根据主外键的使用原则,可以设置如下:
建立主外键的好处:
SQL中的主外键就是对表与表之间进行约束,主键保证了数据的唯一性,外键保证的是数据的完整性。
就拿【新闻发布系统】来说,<category>类别表指的是新闻的类别,<news>新闻表指的是各个类别下的新闻,<comment>评论表指的是各条新闻的评论,这里需要指出的是,一个新闻类别下可以有多条新闻,一条新闻下可以有多条评论。如果要删除一个类别的话,需要把这个类别下的多条新闻同时删除,同样,如果要删除一条新闻的话,需要把这条新闻下的多条评论同时删除,这里需要指出的是:类别表和新闻表、新闻表和评论表都是一对多的关系,这就是传说中的级联删除。如果不设置主外键的话,删除一个新闻类别,只能删除一个新闻类别,而这个类别的所有新闻并没有删除,而我们希望的是删除一个类别之后,其下的所有新闻都删除,方便快捷。
步骤一: 在外键表上右击,选择“关系”:
步骤二:在“外键关系”对话框中,点击“添加”,在“表和列规范”项的右侧的…小按钮:
步骤三:在“表和列”对话框中,在主键表下方选择外键列所在的表和该外键列:
步骤四:在外键表下方,只要选择表中与主键表的列相对应的列就可以:
步骤五:如果还有外键关系需要建立,继续点击外键关系表里的“添加”即可。
【总结】其实,最关键的还是要弄清哪个是主表,哪个是外键表,然后直接在外键表上右击,选择“关系”即可建立两表的主外键关系,当然,可根据需要,一个表中可以有多个外键。刚开始碰到两表之间建立主外键关系的时候,建了好几次都没有成功,通过几次操作之后,就轻车熟路了。不建立主外键的好处就是数据可以随意写入或删除,但这样的同时会造成数据容易出现错误,造成数据冗余;建立主外键关系既可以保证数据的唯一性和完整性,又可以增加ER图的可读性,所以要合理利用好主外键关系。
相关文章推荐
- Hdu 今年暑假不Ac?
- Hibernate-note04
- hdu 5290 Bombing plan(树形dp)
- HDU 1276(士兵排列)
- SVN使用过程中的小感悟
- 黑马程序员-C语言中内存动态分配函数的使用方法及注意事项
- hdu2544 最短路(Dijkstra) 解题报告
- JAVA国际化程序实现
- 九度oj 1190
- SSH学习八 Spring框架 -- 控制反转实现Ioc
- Oracle 学习之RMAN(十三)恢复实战--数据块修复
- 八皇后问题
- 那个叫你乖的人
- iOS 9之Advanced Touch Input(高级触摸输入)
- 使用O-LLVM和NDK对Android应用进行混淆
- hdoj Radar Installation
- 使用GEOTools对图层的渲染
- SSO简介
- hdoj Radar Installation
- hdu5336 多校联合第四场1010 模拟+bfs优先队列