2010-09-30 7 views
10

Ja próbuje odwołać się widok z klucza obcego, ale ja dostaję ten błąd:Klucz obcy przedstawieniu widok w Oracle

„Błąd: ORA-02270: brak dopasowania unikatowy lub podstawowy klucz do tego Column- lista "

Jednak utworzyłem klucz podstawowy w tym widoku i zweryfikowałem go w zakładce Ograniczenia w TOAD.

Jest to tabela mam próby utworzenia:

CREATE TABLE QUESTION 
( 
    QUESTION_ID    INTEGER not null, 
    CREATED_USER_ID   INTEGER not null,  
    CONSTRAINT PK_QUESTION PRIMARY KEY (QUESTION_ID), 
    CONSTRAINT FK_USER 
     FOREIGN KEY (CREATED_USER_ID) 
     REFERENCES SOME_VIEW(VIEW_ID) 
); 

SOME_VIEW jest rzutem na podstawie innego widoku, który wskazuje na stole pracownika w innym schemacie.

+1

Gromadzenie chcesz/potrzebujesz tego, aby mieć pojedynczy klucz obcy, który może pochodzić z wielu tabel, ponieważ kolumna może mieć wiele ograniczeń klucza obcego w pojedynczej kolumnie ... ale wartość w kolumnie musiałaby istnieją we wszystkich tabelach związanych z ograniczeniami. Mam nadzieję, że jest to sposób na przeniesienie bazy danych i tylko tymczasowy. –

+0

Innymi słowy, SOME_VIEW, OTHER_VIEW i BASE_TABLE będą musiały mieć te same wartości, aby ograniczenie tego klucza obcego działało? – echoblaze

+1

Powiązane, chociaż stare (2006): http://thinkoracle.blogspot.com/2006/11/view-constraints.html –

Odpowiedz

11

Bez względu na możliwość tworzenia kluczy obcych do widoków, nie jest to najlepszy pomysł na wdrożenie.

Widoki bazy danych zostały zaprojektowane tak, aby użytkownik mógł wygodnie wyszukiwać pewne dane, których potrzebuje, ale jednocześnie służyć jako bariera bezpieczeństwa, aby ukryć całą strukturę bazy danych, w tym tabele, ograniczenia danych w tabelach i, tak, także tabelę odsyłacze.

Tak więc dobrą praktyką dla mnie byłoby odwołanie się do istniejącej tabeli od nowej, pomimo jej pobytu w innym systemie.

+0

+1: Moje przemyślenia i artykuł, który lubiłem wcześniej. –

+0

w porządku, dziękuję za wszystkie opinie. zdecydowaliśmy się na łączenie na poziomie aplikacji, a nie na poziomie bazy danych. – echoblaze

+0

W modelowaniu wymiarowym DWH jest coś, co nazywa się odgrywaniem ról. W takim przypadku tego rodzaju ograniczenia związane z kluczem zagranicznym i tak wydaje się dobrą praktyką. –

-2

Klucz obcy przy widoku jest prawdopodobnie przyczyną problemów.

+1

Czy nie można mieć klucza obcego przeciwko widokowi? – echoblaze

+0

Zobacz http://bytes.com/topic/oracle/answers/64610-create-primary-key-view – igelkott