Moin, meiner Ansicht nach werden hier 2 Dinge in ein und denselben Topf geworfen. Zum einen wird das Wort "Schlüssel" verwendet. Ein Schlüssel ist jedoch immer eindeutig (nämlich identifizierend), zumindest was DBSe angeht. Was mehrdeutig sein kann, sind Indexe. Natürlich kann man auch einen unique Index setzen (der wiederum eindeutig ist), das war vorallem noch in alten Zeiten, um einen Primärschlüssel oder Alternativschlüssel anzulegen. Im Artikelbeispiel wird auch mal vom Sekundärindex geschrieben, wobei mir nicht schlüssig wird, warum das Wort "sekundär" verwendet wird. veranschaulichende Beispiele: create table test( id number(4) primary key, -- Primärschlüssel (ein DBS sollte hier automatisch einen unique Index setzen) nachname varchar(10) not null, vorname varchar(10) unique); --Alternativschlüssel (manche DBS bilden hier automatisch einen unique Index) create index name_mehrdeutig on test (nachname); --Index über nachname anlegen insert into test values (1, 'Müller', 'Andreas'); 1 rows inserted insert into test values (1, 'Müller', 'Mary'); Unique Constraint verletzt -- die 1 steht schon drin insert into test values (2, 'Müller', 'Mary'); 1 rows inserted insert into test values (3, 'Schmidt', 'Mary'); Unique Constraint verletzt % das Attribut vorname ist als Alternativschlüssel definiert, 2mal Mary geht nicht einzutragen insert into test values (3, 'Schmidt', 'Anne'); 1 rows inserted insert into test values (4, 'Schmidt', NULL); -- NULL bei Alternativschlüsseln erlaubt 1 rows inserted insert into test values (5, 'Schmidt', NULL); -- auch mehrfaches Eintragen von NULL 1 rows inserted insert into test values (NULL, 'Schmidt', NULL); -- NULL beim Primärschlüssel nicht erlaubt Einfuegen von NULL in test.id nicht moeglich Und nun das ganze mal mit Fremdschlüsseln: create table verheiratet ( urkunden_id number(10) not null primary key, mann number(4) not null references test, -- Fremdschlüssel auf Primärschlüssel von test frau number(4) not null references test); -- Fremdschlüssel auf Primärschlüssel von test % Der gleiche mann und die gleiche frau können (zu unterschiedlichen Zeiten) mehrfach miteinander verheiratet gewesen sein: create index er_sie on verheiratet (mann, frau); insert into verheiratet values (1234, 1, 2); 1 rows inserted insert into verheiratet values (4321, 1, 2); 1 rows inserted delete from verheiratet; -- alle Datensätze in verheiratet löschen und den Index wegschmeissen 2 rows deleted drop index er_sie; % Der gleiche mann und die gleiche frau dürfen nur einmal miteinander verheiratet gewesen sein: create unique index er_sie on verheiratet (mann, frau); insert into verheiratet values (1234, 1, 2); 1 rows inserted insert into verheiratet values (4321, 1, 2); Unique Constraint verletzt Mit freundlichen Grüßen -- CS-squirrel 11:07, 2. Nov. 2011 (CET)