不可以!\x0d\x0a \x0d\x0a如果两个
主键名称相同说明不了什么的,我们还有一个词叫
值域相同,也就是说两者必须是相同的类似与长度。也就是说外建表中的外键值域必须与主键表的主键值域相同。这才是外键约束的最关键部分。\x0d\x0a \x0d\x0a如果两者来源于同一值域,那么有可能两者可能组合成为同一张表。也就是说AB两表合并,使用同一个foo那么并没有改变函数的依赖
关系。所以两表合一,在关系中还是可以合关的。所以可以考虑两表合并。\x0d\x0a \x0d\x0a但在关系设计后的并不十分完美,即便是我们不违反任何关系范式。因为在表设计中还有一类称为稀疏表与值域依赖关系。而你的问题合并后可能遭遇稀疏表的问题,其实稀疏表也也是一种值域依赖。它会导致大量的冗余数据的。\x0d\x0a \x0d\x0a比如,比如在某些系统中,所有一会员均可登陆,但只有部分会员在拥有该系统的银行账号(银行系统独立开发)。那么,银行系统中规则所有会员最多只能有一个账号,并且账号名称与登陆名称值域相同。那么两表实际上是1:1的关系,有些书上说所有1:1的关系可转人为一张表。那么,我们就会遇到很多账户的用户——造成大量空间的浪费!这就是为什么很多1:1表不能合并的原因,事实上如果合并后,两者可以设计成相同的值域的,虽然合并后两者还是同样没有改变任何函数依赖,但事实上这种空间的极大浪费却是无可避免的,那么不合并的情况下,银行系统中的账户主键同是为登陆用户的主键的外键时,两者构造了1:1关系。但不会导致大量的冗余数据的存在。不少书上虽不赞成1:1关系转化为一张表,但却没有说出任何原因——另外一些纯粹是误导,所有11关系增可转换为一张表。\x0d\x0a \x0d\x0a当然有时我们为了提高数据库运算效率,而对表进行了垂直拆分(也就是说,一个表将主键和部分属性,而另一个表为主键和另一部分属性)。这种方式常见于表中部分数据最常用,而另一部分不常用,那么,我们将属性按常用与不常用拆成两个表。这种情况下,一般用于两者独立性很强的场所,不要有很多地方对其再连接还原,因为链接是很耗时的 *** 作。这种设计规则还是可以存在的。但这时往往会给一些“善于”思考的读者留一个疑问!这拆分的两个表能不能主键互相做另一个表的外键呢?\x0d\x0a \x0d\x0a我不知道这些“善于”思考者的心理是怎么想的——但是我知道这是完全无必要的。因为你既然想建立如此关系,就是相同步删除或插入而已,防止出现只删除了一个表中的数据而另一个表会留下无意义的数据——事实上这种情况是存在的!氢如果两者主键又同时互为外键时,就可做到同步——嗯,相法不错!\x0d\x0a \x0d\x0a但是如果你这种同步对于你来说非常重要——那么当初你不应该拆表!或者说你当初应该选择水平拆表的办法(多表结构相同,存储不同的记录),否则干嘛费那事?但如果你想两者兼顾——我只能告诉你,你太“善于”思考了——以致于象这种天方夜谈都想出来了!\x0d\x0a \x0d\x0a事实上是不可以了!从原理上来看,如果数据允许你这么设计,那么,你在删除时你准备删除那条数据?A表中的?还是B表中的,如果你删除A表中的,那么,它做为一个主键,那么你必须要先删除B表中的外键,在为数据库在检查时必须先删除外键数据记录,然后才会删除主键。要不数据库会出现一个不知在何处存在的外键了!是的,数据库会替您先删除B表中的主键的。这与你A表删除多么相似啊?要想删除B表,那么B的外键所指示的A表主键同样得先删除吧——这个循环怪圈你永远跳不出去!所以无法级联删除!\x0d\x0a \x0d\x0a显然同样的问题会出现在插入上,你准备在A表中插入一条记录,因为A表中的主键也是外键,想插入?那么麻烦您先插入B表中的一条数据吧,B表想插入?那么它和A表插入的情况又有何不同呢?所以你根本无法插入一条数据!\x0d\x0a \x0d\x0a太开玩笑了——如果我不设置删除时检查和插入时检查不就可以了?事实上更新检查又何尝试不是呢——如果更新检查也不设置呢?\x0d\x0a \x0d\x0a那么——我就想不起来你建这个外键约束还有何必要了!建一个约束,然后这个约束力不让生效,这是做何道理呢?\x0d\x0a \x0d\x0a所以,主键互为外键——从理论上来讲,你认为有任何的必要性么?请问各位大侠,资料库同一张表里能有两个或两个以上的主键吗
没有问题,可以定义多个栏位为主键,就是组合主键。
这种主键主要用在一对多的关系中,如果是在一个典型的一对多的关系中,某一表定义为组合主键后,也意味着它对它的下属一对多表,也要用组合主键方可。
用了组合键的表相当于是连线其他几个表的桥梁。
在资料库中怎样给一张表设定两个主键
一个表里面只有一个主键,但是你可以设定联合主键,就是将多个栏位一起设定为主键
在MySQL资料库中,能不能有两个主键,
一个表不能有2个主键,因为主键代表资料的物理组织形式,所以不能存在2个。但是允许用多个栏位联合组成主键。
一组资料中,可能有两个或两个以上的众数对吗
正确,比如说这一组数:1、3、3、3、3、4、4、4、4、5,
3和4出现最多,都是4次,众数就是3和4
再比如:1、3、3、3、4、4、4、5、5、5、6
众数就是3、4、5
资料库 主键唯一是一张表里唯一还是整个资料库里唯一
这张表中。
一个专案当中可以有两个主键相同的资料库表吗
不可以,不同表的栏位名可以一样,但是主键名不能一样,就像不能有2个同名的表一样
一个rac 丛集中可否有两个以上的资料库
一个数据库可以由多个例项开启,但任何时刻一个例项只能开启一个数据库。多个例项可以同时执行在同一个机器上,它们彼此访问各自独立的物理资料库。
对于一个数据库里的多个表空间,是享用RAC功能的,在应用程式配置资料库连线池的时候,用“使用者”区分开就可以了。
vfp中一张表能否同时属于两个资料库
一张表不能同时属于两个资料库,如果想让一个表原来属于一个数据库转移到另一个数据库,必须先将这个表从这个资料库中移出才能新增到另一个数据库中。
资料库表中可以在一个表里面有两个关联同一个表的外来键吗
资料库表中可以在一个表里面有两个关联同一个表的外来键吗
你再加个第一张表就可以了
select T1.列1 , T2.列1
from 第一张表 T1, 第一张表 T2,第二张表 T3
where T1.id=T3.id and T2.id=T3.id
可以
第一张表JK_USE用UseId属性作主键
第二张表JK_INFO用UseId属性作外键
这样就可以将这两个表关联上了
第一张表JK_USE定义主键时如下:
PRIMARY
KEY(UseId)
第二张表JK_INFO定义外键时如下:
FOREIGN
KEY(UseId)
REFERENCES
JK_USE(UseId)
评论列表(0条)