⑴ 数据库关系怎么画出来
方法如下:
1、打开Microsoft Office Visio 2007,左侧的模板类别中选择“软件和数据库”,双击右侧的“数据库模型图”;
⑵ 关系数据库设计理论
数据依赖是关系内部属性之间相关联系的表达,是语义的体现,是构成数据的约束,大多数数据依赖是函数依赖,它是关系中“键”概念的范化。
使用数据依赖这一概念来定义关系模式的规范形式,即规范化理论。
函数依赖FD
A1,A2,……,An——>B1,B2,……,Bm
(若两个元组A1到An上相同则B1到Bm也相同,A1到An函数决定B1到Bm)
从已知FD推断其它FD
FD的集合T,S
T与S等价:关系实例集合满足S与其满足T的情况完全一样
(S是从T中推断而来,T也是从S中推断而来)
S从T中推断而来:满足T的关系实例也满足S(S蕴涵于T)
分解/结合规则:
平凡函数依赖
一个约束对所有关系实例都成立,且与其它约束无关
平凡FD的右边是左边的子集
平凡依赖规则:
(注:
非平凡函数依赖:仅当其右边属性集中至少有一个属性不属于左边的集合。例如: title year →year length
完全非平凡函数依赖:仅当其右边集合中的属性均不在左边集合中。例如: title year →length)
属性的闭包
S下{A1,A2,……An}的闭包{A1,……An}上标+
就是A中可以从S推断出来的右边变成一个集合
从一个给定集合A出发,不断扩展这个集合,对于S中的FD分解使右边只有一个属性,然后对于FD,只要左边都在集合中就把右边也加到集合中。p42
传递规则
函数依赖的闭包集合
求函数依赖集F的闭包F+:求所有属性子集的闭包(不考虑空集),然后利用每个闭包来写FD(A->空集也要写)
S的基本集:任何和S等价的FD集合
最小化基本集:右边均是单一属性;删除任何一个FD后不再是基本集;
对于任何一个FD,若删除其左边一个或多个属性,不再是基本集
投影函数依赖
R投影到R1
函数依赖集S的投影为满足以下条件的FD的集合:1.从S推断而来2.只包含R1中的属性
对R1的所有子集求闭包,得到FD的基本集,简化为最小基本集
“求属性子集闭包”的几个主要应用
1.求所有候选键
2.求所有非平凡FD
3.求所有违反BCNF的非平凡FD(投影函数依赖应用1)
4.求非平凡FD的最小基本集(投影函数依赖应用2)
简化规则:
1.不必考虑空集(适用于1-4)
2.不必考虑不能推出非平凡函数依赖的属性子集X(适用于1-4)
2.1属性子集X的任何一个子集都不是FD的左部,无法推出非平凡FD,无需求该属性子集X的闭包。如例1.
2.2不必考虑属性全集U的闭包。
2.3 属性子集X+的闭包依然是X+本身,无法推出非平凡FD,不需要再求X+的闭包
3.如果已知属性子集X, X+是属性全集,那么就无需考虑任何X超集的闭包。(注意:!!!!!!不适用于2!!!!!!)
异常:冗余;更新异常;删除异常
分解关系
将一个关系用多个不存在异常的关系替换
Boyce-Codd范式BCNF
每个非平凡FD的左边都必须是超键
任何一个二元关系属于BCNF
(BCNF范式在3NF的基础上,消除主属性对键的部分函数依赖与传递函数依赖)
分解为BCNF
输入:关系R0其上的函数依赖集S0
输出:由R0分解出的关系集合,每个关系都属于BCNF
方法:R=R0 S=S0
1.检验R是否属于BCNF若是则返回{R}
2.有BCNF违例X->Y,计算X的闭包,令R1为X的闭包,R2为X与不在X的闭包中的属性
3.计算R1,R2的投影函数依赖S1,S2
4.递归检验R1,R2
分解的优势
1.消除异常
2.信息的可恢复
3.依赖的保持
BCNF可保持1,2
3NF可保持2,3
无损连接的分解
子关系经连接(这里指自然连接)运算可恢复原关系
保持依赖的分解
子关系的函数依赖集可蕴涵原函数依赖集
从分解中恢复信息
无损连接:可通过连接分解的各个关系重构原关系
若Y->Z在关系R上成立,且R的属性集为X∪Y∪Z,则R=π{下标X∪Y}(R)⋈π{下标Y∪Z}(R)
chase算法:检验一个分解是否含有无损连接,即判断是否可以根据F中的FD来证明所有属于π{下标s1}(R)⋈π{下标s2}(R)⋈……⋈π{下标sk}(R)的元组t也属于R
依赖的保持
BCNF无法保持 p57例3.25
第三范式3NF
拥有无损连接和依赖保持性质
条件:对于每个非平凡FD,或者其左边是超键,或者其右边仅由主属性构成
⑶ 请问数据库在创建表的时候如何设计表关系,一对一,一对多,多对多 请高手举例说明。谢谢!!!
多对多关系至少需要3个表,我们把一个表叫做主表,一个叫做关系表,另外一个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块名称;副表是内容比较多,内容变化的,例如)。
按照数据库的增删查改操作,多对多关系的查找都可以用inner join或者
select * from 主表 where id in (select 主表id from 关系表)
1,角色任命型
特点:关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键,有一个表是字典类型的表。
界面特点:显示主表,用checkbox或多选select设置多选关系。
例如:任命版主(用户表-关系表-版块名称表),角色权限控制等,用户是5个版块版主,只要关系表5行纪录就可以确立,关系表的两个外键具有联合主键性质。
增加关系:如果没有组合纪录,insert之。
删除关系:如果有组合纪录,删除之。
2,集合分组型
特点:同角色任命型类似,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。区别是主副表都不是字典表,可能都很大不固定。
界面特点:显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。
例如:歌曲专集(专集表-关系表-歌曲表)。手机分组(分组表-关系表-手机表)。用户圈子(圈子表-关系表-用户表)。文章标签(文章表-关系表-标签表)
增加关系:同版主任命型。
删除关系:同版主任命型。
3,明细帐型
特点:关系表可以有重复纪录,关系表一般有时间字段,有主键,可能还有文字型的字段用来说明每次发生关系的原因(消费)。
界面特点:显示关系表,用radio或下拉设置单选关系。
例如:现金消费明细帐或订单(用户表-订单表-消费原因表),用户可能多次在同一事情上重复消费。积分变化纪录也属于这类。
增加关系:不管有没有组合纪录,insert之,纪录时间。
删除关系:根据关系表PK删除。
4,评论回复型
特点:同明细帐型关系表一般有时间字段,有主键,区别是重点在文字型的字段用来说明每次发生关系的内容(评论回复)。
界面特点:回复文本框。
例如:论坛回复(用户表-回复表-帖子表),用户可能多次在不同帖子上评论回复费。
增加关系:不管有没有组合纪录,insert之,纪录时间和文字。
删除关系:根据关系表(回复表)PK删除。
5,站内短信型
特点:主副表是同一个,关系表一般有时间字段,有主键,重点在关系表文字型的字段用来说明每次发生关系的内容(消息)或者其他标记位来表示文字已读状态时间等。
界面特点:回复文本框。
例如:站内短信(用户表-短信表-用户表),用户可能给用户群发或者单发,有标记位来表示文字已读状态时间等。
增加关系:不管有没有组合纪录,insert之,纪录时间和文字。
删除关系:根据关系表(回复表)PK删除。
6,用户好友型
特点:主副表是同一个,同集合分组型,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。
界面特点:同集合分组型,显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。
例如:下载站点的文件,(文件表-关系表-文件表)可以被软件工具打开,软件工具本身也是一种文件,可以被下载。用户的好友,也是用户(用户表-好友关系表-用户表)
增加关系:同版主任命型。
删除关系:同版主任命型
⑷ 如何设计数据库中表的关系
1.理解您的数据
在设计表之前,应明确您打算如何处理数据,还要了解随着时间的推移数据会发生什么样的变化。您所做的假设将会影响最终的设计。
2.您需要什么样的数据
设计应用程序时,关键要了解设计的最终结果,以便确保您准备好所有必需的数据并知道其来源。例如,报表的外观、每个数据的来源以及所需的所有数据是否都存在。对项目损失最大的莫过于在项目后期发现重要报表缺少数据。
3.明确所需数据的类型和来源
知道需要什么样的数据后,就必须确定数据的来源。数据是否从其他数据源中导入?数据是否需要清理或验证?用户是否需要输入数据?明确所需数据的类型和来源是数据库设计的第一步。
4.您打算如何处理这些数据?
用户是否需要编辑这些数据?如果需要,应如何显示数据以便于用户理解和编辑?有没有验证规则和相关的查找表?要求对编辑和删除保留备份的数据输入有没有相关联的审核问题?需要为用户显示哪些摘要信息?是否需要生成导出文件?了解这些信息后,就可以想象字段之间是如何相互关联的了。
5数据之间如何相互关联?
将数据分组放入相关字段(例如与客户相关的信息、与发票相关的信息等),每个字段组都代表要建立的表。然后考虑如何将这些表相互关联。例如,哪些表具有一对多关系(例如,一个客户可能持有多张发票)?哪些表具有一对一关系(这种情况下,通常会考虑将其组合到一个表中)?
6.随着时间的推移数据会发生什么样的变化?
设计表之后,常常会由于没有考虑时间的影响而导致以后出现严重问题。许多表设计在当时使用时效果非常好,但是,常常会因为用户修改数据、添加数据以及随时间的推移而崩溃。开发人员经常会发现需要重新设计表的结构来适应这些变化。表的结构发生变化时,所有相关的内容(查询、窗体、报表、代码等)也必须随之更新。理解并预测数据会随时间推移发生哪些变化,可以实现更好的设计,减少问题的发生。
7.学习如何使用查询
了解如何分析和管理数据同样很重要。您应该深刻理解查询的工作原理,理解如何使用查询在多个表之间链接数据,如何使用查询对数据进行分组和汇总,以及如何在不需要以规范化格式显示数据时使用交叉表查询。
好的数据设计的最终目标就是要平衡两个需要:既要随着时间的推移有效地存储数据,又要轻松地检索和分析数据。理解查询的功能对正确设计表很有帮助。
⑸ 怎么建立这个数据库关系
1.选择表--->某一列--->修改2.右键单击--- >关系
3.添加--->表和列规范-->选择表和列
4.新建数据库关系图
5.只需要按住主键 并拖动 到它外键上,就会看到一个指定关系的对话框
⑹ 数据库关系模型设计在哪找
数据库关系模型设计在数据库模型里面找。数据库模型描述了在数据库中结构化和操纵数据的方法,模型的结构部分规定了数据如何被描述(例如树、表等)。模型的操纵部分规定了数据的添加、删除、显示、维护、打印、查找、选择、排序和更新等操作。
⑺ 用PD设计数据库的时候,怎么画多对多关系
1.在access所有对象中,选中一个想要建立关系的数据表,右键单击,在右键菜单中,选择设计视图。 2.接着在菜单栏点击 数据库工具。 3.在数据库工具中,点击关系。 4.在关系面板中,在空白的位置,右键单击,选择显示表。 5.在现实表的对话框中,。
⑻ 根据这样的数据关系如何设计数据表
1、一对一可以两个实体设计在一个数据库中l例如设计一个夫妻表,里面放丈夫和妻子
2、一对多可以建两张表,将一这一方的主键作为多那一方的外键,例如一个学生表可以加一个字段指向班级(班级与学生一对多的关系)
3、多对多可以多加一张中间表,将另外两个表的主键放到这个表中(如教师和学生就是多对多的关系)
⑼ sql server 2000数据关系图如何设计
1.在服务器资源管理器中右击“数据库关系图”文件夹或该文件夹中的任何关系图。
2.在快捷菜单上选择“添加新关系图”。
即会出现“添加表”对话框。
3.在“表”列表中选择所需的表,再单击“添加”。
这些表以图形方式显示在新的数据库关系图中。
可以继续添加或删除表、修改现有表或更改表关系,直到新的数据库关系图完成为止。