保持一对多的关系

时间:2017-02-10 18:50:58

标签: sql join oracle11g

我想确保在整个Oracle SQL代码段中保持一对多的关系。代码如下所示: SQL的第一部分通过仅使用一列cont_id创建视图cont_ID_group,并将其分组以使其每行一个ID。

第二个视图与mix_id相同。视图AS_BUILT_DATA是是否维护一对多关系的第一个示例。我正在使用as_built_Groups视图来希望创建该关系。

最后一点代码是最重要的,因为它在我在ArcGIS中映射之前创建了最终数据集。我再次尝试通过将DATABASE_PROJECT_MAPPABLE视图和AS_BUILT_DATA与cont_ID_group视图相关联来维护一对多关系。

DATABASE_PROJECT_MAPPABLE和AS_BUILT_DATA有多对多的关系。

create or replace view cont_ID_group as
select cont_id
from DATABASE_PROJECT_MAPPABLE
group by cont_id
;
create or replace view as_built_Groups as
select t.mix_id 
from SMGR.T_CONT_MIX_DSN t
group by t.mix_id
;
create or replace view AS_BUILT_DATA as
select d.cont_id,t.* 
from SMGR.T_SUPERPAVE t
inner join as_built_Groups s 
on t.mix_id = s.mix_id
inner join SMGR.T_CONT_MIX_DSN d
on d.mix_id = s.mix_id
;
select distinct t.*,
from DATABASE_PROJECT_MAPPABLE t inner join cont_ID_group i
on t.cont_id = i.cont_id inner join AS_BUILT_DATA s
on s.cont_id = i.cont_id
order by t.Corridor_RB,t.PROJECT_START,t.PROJECT_NUMBER

1 个答案:

答案 0 :(得分:3)

视图不会强制实施关系。如果要维护(强制执行)一对多关系,则应在“父”表上创建PRIMARY KEY,然后在子表上创建一个FOREIGN KEY,引用该主键的主键。父表,