2017-02-10 7 views
-2

Я хочу убедиться, что поддерживаю отношения «один ко многим» в разделе кода Oracle SQL. Код показан ниже: Этот первый раздел SQL создает представление cont_ID_group, беря только один столбец, cont_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

So. ...у вас есть вопрос? –

+0

Да, я хотел бы знать, поддерживаю ли я отношения «один ко многим». –

+0

... отношение «один ко многим» между **, какие столбцы **? Вы * понимаете, что мы не можем волшебным образом заглянуть в вашу базу данных и посмотреть ваши данные, не так ли? Мы также не видим связей между сущностями между таблицами, из которых вы строите свои данные. –

ответ

3

Виды не обеспечивают соблюдение отношений. Если вы хотите поддерживать (обеспечивать соблюдение) отношения от одного до многих, вы должны создать PRIMARY KEY в «родительской» таблице, а затем создать в дочерней таблице FOREIGN KEY, которая ссылается на первичный ключ родительской таблицы,

+0

Я, это часть проблемы. Окончательный sql-запрос также станет представлением, чтобы его можно было регулярно обновлять новыми данными и вставлять в ГИС для сопоставления. Таким образом, создание или замена представления - лучший вариант. –

+0

Im пытается создать представление набора данных, которое можно оставить в покое и запустить из ГИС людьми, которые ничего не знают о SQL или программировании. Не то, чтобы я ничего хорошего. –

+2

Создание отношения PRIMARY KEY/FOREIGN KEY (PK/FK) в таблицах не исключает возможности создания каких-либо просмотров; они не являются взаимоисключающими. Но ваш первоначальный вопрос заключался в поддержании этих отношений. Более того, наличие PK/FK на месте может обеспечить оптимизацию производительности в некоторых случаях. – BobC