Oracle prim/fremschlüssel/index

Hallo,
ich habe eine frage zum PK und FK.
habe follgendes Beispiel gefunden und frage mich warum man erst unique index dann pk auf das selbe Feld macht?

CREATE TABLE meineTab (
tab_id number(38,0) NOT NULL,
name VARCHAR2(255) NOT NULL));

CREATE UNIQUE INDEX ind_tab ON meineTab (tab_id) TABLESPACE index_ts;
ALTER TABLE meineTab
ADD (CONSTRAINT pktab PRIMARY KEY (tab_id) USING INDEX TABLESPACE index_ts);

a)
Denn ist es nicht so, dass wenn man ein PK erstellt auf Feld das not null ist automatisch ein index erstellt wird, und PK sind doch grundsätzlich unique. Oder versthe ich etwas falsch?

b)
Nun zum Fremschlüssel:
bei dem sleben Beispiel was ein Statement wie folgt:

ALTER TABLE FK_Tab
ADD CONSTRAINT fk_1 FOREIGN KEY (FK_Feld) REFERENCES meineTab;

Muss man nicht auch das Feld angeben das man zuweisen möchte?wie

ALTER TABLE meine_Tab
ADD CONSTRAINT fk_1 FOREIGN KEY (FK_splate) REFERENCES meineTab (tab_id);

Gruß und Danke im Voraus

Hallo Stella,

ja Du hast Recht, einer der Indizes ist überflüssig. Zur zweiten Frage: Welche Datenbank wird hierbei vorausgesetzt? Das könnte auch an der „Intelligenz“ des DBMS liegen.

MfG Georg V.

P.S.: Bitte fülle doch die Visitenkarte wenigsten teilweise aus, damit ich bedarfsgerechter Antworten geben kann.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo danke für die Antwort,
es hadetl sich um eine Oracle 10G DB

Mfg
Stella

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
ich habe eine frage zum PK und FK.
gelöscht :::
Muss man nicht auch das Feld angeben das man zuweisen
möchte?wie

ALTER TABLE meine_Tab
ADD CONSTRAINT fk_1 FOREIGN KEY (FK_splate) REFERENCES
meineTab (tab_id);

Gruß und Danke im Voraus

Hallo Stella,

ja Du hast Recht, einer der Indizes ist überflüssig. Zur
zweiten Frage: Welche Datenbank wird hierbei vorausgesetzt?
Das könnte auch an der „Intelligenz“ des DBMS liegen.

MfG Georg V.

P.S.: Bitte fülle doch die Visitenkarte wenigsten teilweise
aus, damit ich bedarfsgerechter Antworten geben kann.

Hallo danke für die Antwort,
es hadetl sich um eine Oracle 10G DB

Mfg
Stella

Hallo Stella,

dazu sagt die Oracle-Doku: If you only identify the parent table and omit the columns names, the foreign key automatically references the primary key of the parent table. Wenn ausschließlich die Prüftabelle ohne Columns angegeben wird, wird automatisch der PK der Prüftabelle verwendet.

Also Eigenintelligenz vom DBMS.

MfG Georg V.

Hi,

habe follgendes Beispiel gefunden und frage mich warum man
erst unique index dann pk auf das selbe Feld macht?
[…]
Denn ist es nicht so, dass wenn man ein PK erstellt auf Feld
das not null ist automatisch ein index erstellt wird, und PK
sind doch grundsätzlich unique. Oder versthe ich etwas falsch?

Wenn ich mich nicht sehr täusche, dann sagt der SQL Standard eigentlich nichts darüber, wie denn der PK verwaltet wird, d.h. ob ein Index erstellt wird oder nicht ist implementationsabhängig. Dass es mehr als vernünftig ist, dafür einen unique Index zu verwenden steht auf einem andern Blatt Papier.

Ich hab’s jetzt nicht ausprobiert, aber wenn mich meine Erinnerung wiederum nicht trügt, dann wird in deinem Beispiel auch tatsächlich nur ein Index angelegt, der Primary Key verwendet den dann automatisch. Wenn du dann den PK wegwirfst wird der Index aber nicht mitgelöscht (im Gegensatz dazu wird er sehr wohl gelöscht, wenn du ihn nicht separat erstellt hast).

Gruß
Martin