如果实现一对多关系的版本管理?

nosort 2011-04-20 11:06:49
高手请帮释疑:假如有一种数据关系,事物A对应于多个事物B,且这种关系在不同时期的关系是不同的。如何用关系表表达这种关系呢?

假如没有关系版本差异,可以很容易使用一对多关系实现如下:

A表字段:
Akey Aname

B表字段:
Bkey Bname


C关系表字段:
Ckey Akey Bkey

select * from C WHERE C.Akey='1001'可以获得关系列表

但目前要求能通过Akey找到不同版本的B列表,如何实现呢?
...全文
53 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nosort 2011-04-22
  • 打赏
  • 举报
回复
谢了,可能是我没有描述清楚问题,结贴了。
超级大笨狼 2011-04-21
  • 打赏
  • 举报
回复
Group by
having
sum()
count()
试验下这些
nosort 2011-04-20
  • 打赏
  • 举报
回复
谢谢指教,对SQL确实不是很精通。

我是希望能够实现从一个AID,查询出它有多少个版本的B集合关系,以及每个B集合的数据

一对多的关系可能是实现不了的,大狼再帮指点一下啊。
超级大笨狼 2011-04-20
  • 打赏
  • 举报
回复
你这个结构是多对多的,需要关系表。
一对多,不需要关系表,只需要在“多”的那张表加个“少表主键”的外键,就是在B里加AID
然后就查询就可以了

select B.Bname from A inner join B on A.AID=B.AID where A.AID=123
你还可以在后边加Group by B.Bname或者 B.AID之类的聚合查询。

你是SQL基本功还不到家,这类问题,老夫熟悉的很。
十年数据库经验了,我已经不再关心数据库的问题了,那是小孩子的事情了。

8,028

社区成员

发帖
与我相关
我的任务
社区描述
高性能数据库开发
社区管理员
  • 高性能数据库开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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