急急急急急急!!!!!!!!!!!!希望各位大哥赶快帮忙做一下,谢谢了 小弟急着用.!!!!!!!!!!!在线等待...

wjw0826 2007-11-13 11:47:09
现有两个表:
1. 用户信息表(UserInfo)包括UID(用户ID,主键)、UNAME(姓名)、USALARY(工资)、UDEPTNO(所在部门编号)以及UPOS(级别)
2. 印章表(SealInfo)包括SEALID(印章编号,主键)、SEALNAME以及SEALDATA
请设计一个用户和印章关系表,做到:
a. 一个用户可以拥有多个印章;
b. 一个印章可以被多个用户同时拥有;
c. 一个印章可以被一个或多个部门同时拥有.
然后完成以下操作:
1. 删除印章(SEALID=A)所需的SQL语句及步骤。
2. 请用SQL语句查询印章(SEALID=C)可以被那些用户或部门(编号)使用。
3. 请用SQL语句查询用户(UID=C)可以使用的所有印章。
...全文
39 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bai_jiong 2007-11-14
  • 打赏
  • 举报
回复
更正一下SQL语句(1):

在定义印章ID与用户表(部门表)之间的外键关系时,加上CASCADE DELETE 子句,

然后在实际的SQL语句执行时,就可以用
DELETE FROM SEALTABLE WHERE SEALID='A'

如果在定义外键时没有CASCADE DELETE 子句的话,在执行DELETE 语句时,ORACLE 数据库系统会报错,不让删除的.


ww2008 2007-11-13
  • 打赏
  • 举报
回复
我想只需要设计一个UserSeal表(uid,sealid),在这两个字段上建主键。
同时uid要参考UserInfo表,sealid要参考SealInfo表。
bai_jiong 2007-11-13
  • 打赏
  • 举报
回复
你说的问题至少也有两种解决方法:

(1)
(A) 用户与印章之间是多对多的关系
(B) 部门与印章之间也是多对多的关系
如上所述,则可以建表如下:
用户表,部门表,印章表,用户印章表,部门印章表

之所以这样建表,是考虑到一个用户可以属于多个部门的关系

(2)

(A) 用户与印章之间是多对多的关系
(B) 用户与部门之间是多对一的关系
如上所述,则可以建表如下:
用户表,部门表,印章表,用户印章表




SQL语句如下:


(1) delete from userseal where sealid='A' cascade delete

(2)如果你选择的是第一种设计方案,则SQL语句为:
select userid as id from usertable where sealid='C'
union all
select deptid as id from depttable where sealid='C'
如果你选择的是第二种设计方案,则SQL语句为:
select userid as id from usertable where sealid='C'

(3)select * from userseal where uid='C'


17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧