当前位置: 代码迷 >> 高性能数据库开发 >> 如其实现一对多关系的版本管理
  详细解决方案

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

热度:8174   发布时间:2013-02-26 00:00:00.0
如果实现一对多关系的版本管理?
高手请帮释疑:假如有一种数据关系,事物A对应于多个事物B,且这种关系在不同时期的关系是不同的。如何用关系表表达这种关系呢?

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

A表字段:
Akey    Aname

B表字段:
Bkey    Bname


C关系表字段:
Ckey  Akey  Bkey

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

但目前要求能通过Akey找到不同版本的B列表,如何实现呢?
------解决方案--------------------------------------------------------
你这个结构是多对多的,需要关系表。
一对多,不需要关系表,只需要在“多”的那张表加个“少表主键”的外键,就是在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基本功还不到家,这类问题,老夫熟悉的很。
十年数据库经验了,我已经不再关心数据库的问题了,那是小孩子的事情了。
  相关解决方案