Archief - SQL: Constraints

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

bibawa

Legacy Member
Dit is geen vraag voor een website of zo , maar is een vraag over een examen SQL dat ik volgende week heb. Ik zou hier graag een antwoord op willen hebben of beter, het verschil tussen beide versie.

Kom nu a.u.b. niet af dit dit schoolwerk is, want het is geen taak ik heb EXAMEN dus geen tijd te verliezen.

De bedoeling is dus dat ik een tabel ga creeeren, de oplossing van mijn docent is de volgende:

Code:
create table stuk(

 stuknr number(5) constraint pk_stuk primary key,

 stuknm varchar2(20) not null,

 nrorig number(5) constraint fk_stuk_stuk references stuk(stuknr),

 genrenm varchar2(10),

 niveaucode char(1) default 'A' not null,

 duurstuk number(3,1),

 jaar number(4) not null,

 compnr number(4) not null constraint fk_stuk_componist references componist(compnr),

 constraint fk_stuk_genre foreign key (genrenm) references genre(genrenm),

 constraint fk_stuk_niveau foreign key (niveaucode) references niveau(niveaucode),

 constraint u_combinatie unique(compnr,stuknm)

);

(Er van uitgaande dat die constraint verwijzen naar andere tabellen),
Wat ik me hierbij afvraag is waarom de foreign key (genrenm) en (niveaucode) pas achteraf worden gelegd, ze verwijzen allebei naar andere tabellen.

Zelf heb ik het zo gedaan, dus deze 2 foreign keys direct aangemaakt achter de aanmaak van de tabel:

Code:
  CREATE TABLE stuk(

 stuknr NUMBER(5) CONSTRAINT pk_stuknr PRIMARY KEY,

 stuknm VARCHAR2(20) NOT NULL,

 nrorig NUMBER(5) CONSTRAINT fk_nrorig REFERENCES stuk(stuknr),

 genrenm VARCHAR2(10) CONSTRAINT fk_genrenm REFERENCES Genre(genrenm),

 niveacode CHAR(1) default 'A' NOT NULL CONSTRAINT fk_niveau REFERENCES niveau (niveaucode),

 duurstuk NUMBER(2,1),

 jaar NUMBER(4) NOT NULL,

 compnr NUMBER(4) NOT NULL,

 CONSTRAINT u_comptitel UNIQUE(compnr,stuknm)

);

Als ik mijn sql statement uitvoer in oracle dan wordt mijn tabel ook netjes aangemaakt....

Je voegt een constraint toch achteraan maar pas toe als je een verwijzing maakt n aar meerdere velden uit een tabel?


Ik hoop dat hier wat slimme bollen zitten die mij kunnen helpen...

Groeten,

Bibawa

orez

Legacy Member
een primary key, constraint of foreign key, kan je gelijk wanneer toepassen nadat de tabel is aangemaakt... doe je dit er nu net achter, int midden of opt laatste maakt geen verschil uit..

Boddah

Legacy Member
je moet de kolom eerst hebben vooraleer je er een constraint op kan zetten. maar of die constraint nu helemaal op het einde komt, of vlak na de kolom definitie maakt (denk ik) niks uit.
test dat is eh :)

DJ_Trash

Legacy Member
btw; gebruik namign convention voor extra style bonussen ;)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan