三九宝宝网宝宝教育学龄段教育

如何定义数据库表之间的关系

12月21日 编辑 39baobao.com

[大小之间《大作家的小老师》教学一得]《大作家的小老师》一文的课题是很值得研究的,大小之间蕴藏着更深层次的含义。因此在教学中我紧紧扣住课题让学生去领悟课文深层的含义。 1、看课题,寻找问题 在导入课文时我...+阅读

唯一需要注意的是,外键字段的数据类型必须和主键的数据类型相同。但是有些系统可以允许这条规则有一个例外,它允许在数字和自动编号(autonumbering)字段(例如在SQL服务器系统中访问Identity和AutoNumber)之间建立关系。此外,外键的值可以是空(Null),尽管强烈建议在没有特别原因的情况下,不要让外键为空。你有可能永远都不会有机会来使用需要这项功能的数据库。 现在回到我们的示例关系表,并开始输入合适的外键。(请继续在纸上打草稿——在你的数据库系统中创建真正的数据表还为时过早。要知道在纸上纠正错误要容易得多。)要记住,你正在把主键的值添加到关系表里。只要调用实体之间的关系就行了,而其他的就简单了: 书籍和分类是有关系的。 书籍和出版社是有关系的。 书籍和作者是有关系的。 作者和邮政编码(ZIP)是有关系的。 邮政编码和城市是有关系的。 城市和州是有关系的。 这一步并不是一成不变的,你可能会发现在规范化的过程中加入外键会更容易一些。在把字段移动到一个新的数据表时,你可能要把这个新数据表的主键添加到原来的数据表里,将其作为外键。但是,在你继续规范化剩余数据的时候,外键常常会发生改变。你会发现在所有这些数据表被全部规范化之后,一次添加所有的外键,这样效率会更高。 操作数据表 现在让我们一次操作一个数据表,就从Books数据表开始,它在这个时候只有三个字段。很明显,Authors、Categories和Publishers数据表的主键会被添加到Books里。当你完成的时候,Books数据表就有了七个字段: Books Title (PK) ISBN (PK) Price FirstNameFK (FK) Authors.FirstName many-to-many LastNameFK (FK) Authors.LastName many-to-many CategoryFK (FK) Categories.Category many-to-many PublisherFK (FK) Publishers.Publisher one-to-many 要记住,Authors数据表里的主键是一个基于姓和名两个字段的复合关键字。所以你必须要把这个两个字段都添加到Books数据表里。要注意,外键字段名的结尾包含有FK这个后缀。加入这个后缀有助于提高可读性和自我归档。通过名称这种方式来区别外键会使得追踪它们更简单。如果主键和外键的名称不同,这没有关系。 这里出现了三种关系:Books和Authors、Books和Categories,以及Books和Publishers。这三种关系中所存在的两种问题可能没有那么明显: Books和Authors之间的关系:一本书可以有多个作者。 Books和Categories之间的关系:一本书可以被归入多个类。 这两者的关系是多对多的关系。先前我告诉过你,数据表不能直接实现这样的关系,而需要第三个联系表来实现。(Books和Publishers的关系是一对多的关系,就像现在所说的,这样是没有问题的。) 这两个新发现的多对多关系将需要一个联系表来包含来自每个数据表的主键,并将其作为外键。新的联系表是:BooksAuthorsmmlink TitleFK (FK) Books.Title one-to-many ISBNFK (FK) Books.ISBN one-to-many FirstNameFK (FK) Authors.FirstName one-to-many LastNameFK (FK) Authors.LastName one-to-many BooksCategoriesmmlink TitleFK (FK) Books.Title one-to-many ISBNFK (FK) Books.ISBN one-to-many CategoryFK (FK) Categories.Category one-to-many 没有必要更改Categories、Authors或者Publishers数据表。但是,你必须把FirstNameFK、LastNameFK和CategoryFK这三个外键从Books里移走: Books Title (PK) ISBN (PK) Price PublisherFK (FK) Publishers.Publisher one-to-many 现在,让我们转到Authors数据表上来,它现在有两个字段。每个作者都和ZIPCodes数据表中的邮政编码的值相关。但是,每个邮政编码会和多个作者相关。要实现这种一对多的关系,就要把ZIPCodes数据表中的主键添加进Authors数据表作为外键: Authors FirstName (PK) LastName (PK) ZIPCodeFK (FK) ZIPCodes.ZIPCode one-to-many 至此,你已经准备好了处理剩下的地址部分了。看到它们被分在不同的数据表里是很让人奇怪的,但是这是遵照BCNF正确规范化数据的结果。每个邮政编码的值只会有一个对应的城市值和州值。每个城市和州的值只会被输入进其对应的数据表里一次。ZIPCodes和Cities数据表需要外键字段来实现这些关系: ZIPCodes ZIPCode (PK) CityFK (FK) Cities.City one-to-many Cities City (PK) StateFK (FK) States.State one-to-many States State (PK) 从一个到九个 最后,你有了九个数据表:Books、Authors、Categories、Publishers、ZIPCodes、Cities、States、BooksAuthorsmmlink和BooksCategoriesmmlink。图A是这个示例数据表的数据库最终的图形形式。很难想像一个简单的数据表会被分成九个数据表。 图A 最初的一个数据表现在需要九个数据表了 由于这个示例数据库很简单,你可能会问这些关系有什么作用。看起来仍在保存冗余的数据,只不过形式不同罢了——通过外键来实现。这是因为我们的数据表现在只有很少几个字段。试想一下有十几个字段的数据表,会是什么样的一个情形。需要承认的是,你仍然需要把数据表的主键作为外键保存进关系表里,...

以下为关联文档:

夫妻之间冷幽默笑话大全1、妻子和丈夫一起吃饭,丈夫不说话,妻子想逗丈夫乐一下,于是说:“二十年前,我的一块手表掉到咱前院的水井里,昨天捞上来,竟然还在运转,而且走时准确,真不可思议。” 丈夫开口说道:“我...

“同学之间的矛盾”主题班会活动记录《同学之间的矛盾》主题班会设计 活动年级:三年级 设计理念 同学关系是学生人际关系中最基本的一种。由于现在的学生多为独生子女,他们虽然渴望与同龄人交往,但又习惯以自我为...

夫妻之间的搞笑冷幽默笑话大全1、妻子十分在乎自己在丈夫心中的地位,她每天都要问丈夫同一个问题:“你到底有多爱我?” 丈夫总是回答:“爱你比海深。” 一天晚上,妻子又问丈夫同样的问题,并且说:“不准说爱你比...

如何理解和处理师生之间的平等关系现代教育观是以学生为主体的教育,教师面对的是一个个鲜活的、思想各异的学生,在整个教育过程中,师生之间是平等对话、互教互学的过程,教师不再是高高在上的权威,学生也不再是被动...

养护宠物与教育孩子之间的关联自己的孩子才上中班,所以家里养了几样常见的小动物来养护和观察,以丰富小朋友的业余生活,培养爱心。三条蚕宝宝、一只龙虾、四尾金鱼 曾经都是 座上宾 ,被尊为我家的宠物。我和...

如何正确处理识谱教学与其它教学内容之间的关系在音乐教学中,主要包括唱歌(小学唱游)、欣赏、器乐、识谱四项。可见识谱是非常重要的一个项目,但也不是全部。所以把握好这个度就很重要。我觉得和识谱关系最大的为唱歌课和演...

二年级上学期第一单元数量之间的关系反思在一年级的时候,学生已经学过 求一个数比另一个多(少)多少 这种类型的解决问题,因为是求两数相差多少,所以要用减法。在二年级上学期第一单元中,教学到了 求比一个数多(少)几是多少...

促进家园之间的关系大三班 金丽,家长开放日已经结束了,经过活动的展示让家长更充分的了解孩子在园的表现,拉近了家长与老师、幼儿园的距离。本次的开放日活动还是比较成功的,通过每一个环节的组织...

创造力与心理健康智力人格之间的关系那些说一下创造力吧 第一点你对自己所从事的专业非常之熟悉。 那么,2113当你看到一些创意的5261时候,你会把它结合到你的专业里面。 比如在小的时候听过老师讲到一个故事。 当...

推荐阅读
图文推荐