高手请帮释疑:假如有一种数据关系,事物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基本功还不到家,这类问题,老夫熟悉的很。
十年数据库经验了,我已经不再关心数据库的问题了,那是小孩子的事情了。