如何建立一对一关系的关系SQL服务器图

数据库的关系是一对一怎么做到删除互补影响?
[问题点数:40分,结帖人wufeng4552]
本版专家分:0
结帖率 92.31%
CSDN今日推荐
本版专家分:6321
本版专家分:214508
2014年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年10月 总版技术专家分月排行榜第二2012年11月 总版技术专家分月排行榜第二
本版专家分:214508
2014年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年10月 总版技术专家分月排行榜第二2012年11月 总版技术专家分月排行榜第二
本版专家分:214508
2014年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年10月 总版技术专家分月排行榜第二2012年11月 总版技术专家分月排行榜第二
本版专家分:111356
2016年8月论坛优秀版主2015年2月论坛优秀版主
2016年4月荣获微软MVP荣誉称号2015年4月荣获微软MVP称号2014年4月 荣获微软MVP称号
2016年7月 MS-SQL Server大版内专家分月排行榜第一
2016年8月 MS-SQL Server大版内专家分月排行榜第二2016年4月 MS-SQL Server大版内专家分月排行榜第二2015年3月 MS-SQL Server大版内专家分月排行榜第二2015年2月 MS-SQL Server大版内专家分月排行榜第二2014年7月 MS-SQL Server大版内专家分月排行榜第二2013年7月 MS-SQL Server大版内专家分月排行榜第二2013年6月 MS-SQL Server大版内专家分月排行榜第二2013年5月 MS-SQL Server大版内专家分月排行榜第二2012年5月 MS-SQL Server大版内专家分月排行榜第二
本版专家分:61620
2016年4月荣获微软MVP称号2015年4月荣获微软MVP称号2014年4月 荣获微软MVP称号2013年4月 荣获微软MVP称号
2013年4月 MS-SQL Server大版内专家分月排行榜第二
2012年5月 MS-SQL Server大版内专家分月排行榜第三
本版专家分:0
结帖率 92.31%
本版专家分:214508
2014年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年10月 总版技术专家分月排行榜第二2012年11月 总版技术专家分月排行榜第二
本版专家分:0
结帖率 92.31%
本版专家分:0
结帖率 92.31%
本版专家分:214508
2014年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年10月 总版技术专家分月排行榜第二2012年11月 总版技术专家分月排行榜第二
本版专家分:0
结帖率 92.31%
本版专家分:214508
2014年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年10月 总版技术专家分月排行榜第二2012年11月 总版技术专家分月排行榜第二
本版专家分:214508
2014年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年10月 总版技术专家分月排行榜第二2012年11月 总版技术专家分月排行榜第二
匿名用户不能发表回复!|
CSDN今日推荐数据库设计实现严格的一对一关系
某单位的职工的基本信息主要有:职工号、姓名、性别、出生日期、身份证号、家庭住址、联系电话,职工的登陆信息主要有:登陆账号、登陆密码和证书摘要。这些数据项都非空。其类图如下图所示:
![类图](https://img-blog.csdn.net/09757?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvejY1NDkzODg3NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
请给出基于Oracle实现的相关SQL脚本,具体包括:
1. 建表语句
2. 保证主码职工号修改的一致性
3. 保证两个表的对应数据同时删除
4. 保证两个表的对应数据同时插入
create table 职工信息表(
int primary key,
varchar2(30) not null,
char(18) not null,
varchar2(300) not null,
varchar2(20) not null
/*注意设置级联删除和延迟约束*/
create table 登陆信息表(
varchar2(20) primary key,
int unique not null,
varchar2(20) not null,
char(256) not null,
CONSTRAINT fk_login_info FOREIGN KEY (职工号) REFERENCES 职工信息表 (职工号) ON DELETE CASCADE DEFERRABLE
设置触发器保证同时修改
/*保证主码职工号修改的一致性*/
CREATE OR REPLACE TRIGGER BIF_UPDATE_LIF
AFTER UPDATE OF 职工号ON 职工信息表
FOR EACH ROW
UPDATE 登陆信息表
SET 职工号=:NEW.职工号
WHERE 职工号=:OLD.职工号;
设置触发器保证同时删除
/*保证两个表的对应数据同时删除(已经设置级联,所以现在只用在删除登陆信息表记录时删除职工信息表对应记录)*/
CREATE OR REPLACE TRIGGER BIF_DELETE_LIF
AFTER DELETE ON 登陆信息表
FOR EACH ROW
DELETE FROM 职工信息表
职工号=:OLD.职工号;
设置触发器配合使用临时表实现同时插入(只允许调用存储过程插入)
/保证两个表的对应数据同时插入/
创建与 职工信息表 结构相同的临时表user_temp
CREATE TABLE user_temp
AS SELECT * FROM 职工信息表 WHERE 1=2;
插入数据的存储过程
CREATE OR REPLACE PROCEDURE PR_INSERT_TEA_SEC(
varchar2(30),
varchar2(300),
varchar2(20),
varchar2(20),
varchar2(20),
char(256),
OUT VARCHAR2(200)
P_RESULT:=”;
–先插入 user_temp
INSERT INTO user_temp
VALUES(登陆账号,职工号 ,登陆密码 ,证书摘要);
–再插入 职工信息表
INSERT INTO 职工信息表VALUES
(职工号,姓名,性别 ,出生日期 ,身份证 ,家庭住址,联系电话);
–删除user_temp
DELETE FROM user_temp
WHERE 登陆账号=登陆账号;
P_RESULT:=’插入成功!’;
WHEN OTHERS THEN
P_RESULT:=’插入时报错:’||SUBSTR(SQLERRM,1,200);
插入 职工信息表 数据的触发器
——保证同时插入到 登陆信息表 ,这样做的目的是防止绕过前台应用程序而直接在后台数据库操作时也能够保证同时插入。*/
CREATE OR REPLACE TRIGGER BIF_INSERT_LIF
AFTER INSERT ON 职工信息表
FOR EACH ROW
V_CNT INT;
SELECT COUNT(*) INTO V_CNT
FROM user_temp
WHERE 职工号=:NEW.职工号;
IF V_CNT=1 THEN
INSERT INTO 登陆信息表
SELECT * FROM user_temp
WHERE 职工号=:NEW.职工号;
RAISE_APPLICATION_ERROR(‘-20020’,’必须同时插入!’);
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!sql server中的一对一、多对一、多对多关系是什么意思?_百度知道
sql server中的一对一、多对一、多对多关系是什么意思?
求大神形象解答
我有更好的答案
打个比方吧一个班级有很多学生,他们分别有不同的学号。一个学生对应一个学号,一个学号对应一个学生;通过学号能找到学生,通过学生也能得到学号,不会重复。这里学生和学号的关系就是一对一。一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里学生和班主任的关系就是多对一。一个班级有很多学生,他们有语文课、数学课、英语课等很多课。一门课有很多人上,一个人上很多门课。这里学生和课程的关系就是多对多。
采纳率:56%
来自团队:
拿你的学号,和课程来说吧。你和你的学号就是一对一的关系,因为一个学生只有一个学号(当然只同一阶段);你和你的课程是一对多的关系 ,你一个人可以学很多门课程吧。课程和学生就是多对多的关系,一个学生可以学多门课程,而一门课程也会有很多名学生学习。简单就是这么理解
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
本人菜鸟学软件方面的知识,希望大家能会的多多帮忙!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
关联映射:一对一
一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。
数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。图示如下:
一对一外键关联:
一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系
关联映射:多对多
多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。
数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。
数据表间多对多关系如下图:
阅读(51572)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_081068',
blogTitle:'总结一下数据库的 一对多、多对一、一对一、多对多 关系 ',
blogAbstract:'\r\n关联映射:一对多/多对一\r\n存在最普遍的映射关系,简单来讲就如球员与球队的关系;\r\n一对多:从球队角度来说一个球队拥有多个球员 即为一对多\r\n多对一:从球员角度来说多个球员属于一个球队 即为多对一\r\n数据表间一对多关系如下图:\r\n \r\n
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}sqlserver一对一关系怎么建立_百度知道
sqlserver一对一关系怎么建立
/*-------------创建学生主信息表-----------------*/
CREATE TABLE xuesheng
xuehao CHAR (5) NOT NULL PRIMARY KEY,
xingming VARCHAR (10),
xingbie CHAR (2) CHECK (XingBie = '男' or XingBie = '女'),
chushengriqi DATE,
mingzu (5...
我有更好的答案
你好, 非常高兴为你解答现在你建了两个表主键都是xuehao, 也就是说学好是1001的在这两个表里都只能存在一条这就是一对一的关系, 不用再有什么约束,不知道你还想要什么结果, 如果有能举个例子吗
采纳率:47%
把xuesheng表的xuehao 字段同时设置为外键。
SQL 关键字 inner join假如A 表有 2个字段 a,b,类型为intB 表有这个字段,b,c 类型intSQL 如下:select * from A inner join B on A.b=B.b结果就是一对一的关系
为您推荐:
其他类似问题
您可能关注的内容
sqlserver的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 一对一关系 的文章

 

随机推荐