mja dat is met mysql dan misschien weer zo, maar in oracle ofzo kan je prima je PK over meerdere velden maken hoor, je PK is unique, dus dan word je user input door de DB gecheckt, en krijg je gewoon een error terug

dat hoeft ook helemaal niet, als jij bijv een database maakt als volgt
klant: voornaam, achternaam, adres, telefoonnr, etc.
order: ordernr,
voornaam, achternaam, datum, etc.
orderregel: poepveld, (bijv auto inc.),
ordernr, artikelnr, aantal
waar
bold de tablename is van een tabel waar
underline de PK is die verwijst naar
italic uit een andere table
een PK hoeft nooit een FK te worden, (ik ben er trouwens wel even van uit gegaan dat voornaam en achternaam nu voldoende is om een klant te identificeren, dat is in de praktijk soms dus anders)
in mijn voorbeeld kan je dus zien, zoals hierboven gezegt, dat logische sleutels gebruikt worden, tenzij het niet anders kan, de tabel klant heeft hier wel logische sleutels, omdat deze geidentificeerd word door de klantvoornaam en achternaam.
de laatste tabel (orderregel) hoeft niet los geidentificeerd te worden, en alle velden uit die tabel mogen vaker voorkomen, zelfs alle mogelijke combinaties mogen vaker voorkomen
voor dit soort tabellen moet je dus WEL een extra kolom maken, en daar dan je PK op zetten.
[
Voor 73% gewijzigd door
BasieP op 31-12-2004 15:51
]
This message was sent on 100% recyclable electrons.