1
2
3
4
5
6
7
8
9
10
11
12
13
| Table 1: -Tbl1_id (PRIMARY) -Values Table2: -Tbl2_id (PRIMARY) -Tbl1_id (index) -Values Table3: -Tbl3_id (PRIMARY) -Tbl2_id (index) -Values |
De identifier die van de table is heeft een primarykey. De overigen, waar je op gaat joinen(SELECT t1.*, t2.* FROM Table1 t1, Table2 t2 WHERE t1.tbl1_id=t2.tbl1_id) krijgen een index
Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart
Overzichtje:
(afkortingen: PK = primary key, FK = foreign key
1-1 relatie:
tabel1 heeft de PK van tabel2 als FK,
en tabel 2 heeft de PK van tabel1 als FK.
1-M relatie:
tabel2 heeft de PK van tabel1 als FK,
of (afhankelijk van welke de 1 is, en welke de M) tabel1 heeft de PK van tabel2 als FK.
M-M relatie:
tabel3 bevat de PK's van tabel1 en tabel2 als FK's. Waarbij dus meerdere instanties van tabel1 met meerdere instanties van tabel2 gekoppeld kunnen worden.
[ Voor 55% gewijzigd door Grijze Vos op 10-02-2004 09:46 ]
Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info
Dit topic kan ook interessant zijn: Correct database ontwerp, koppeltabellen altijd?
[ Voor 34% gewijzigd door Pino op 10-02-2004 11:33 ]
"If you don't know where you are going, any road will take you there"
Verwijderd
MySQL kan zelf niet checken of er een relatie is tussen verschillende tabellen.
Een Primary key en een Foreign key.. die link moet je met behulp van PHP leggen.
In Oracle bijvoorbeeld, kan dat wel "automagisch".
stel:
tabel-users veld-id : tabel-berichten veld-user_id
PRIMARYKEY id : FOREIGNKEY user_id
Als id NIET bestaat in users, mag er NIET geINSERT worden in berichten.
//edit, check zeker even wat tutorials op het net ! Database ontwerp is erg belangrijk.. is de blauwdruk van je website..
[ Voor 15% gewijzigd door Verwijderd op 10-02-2004 11:50 ]
dat wou gaan doen wou ik even deze vraag stellen, en bedankt allemaal
het gaat nu zekers te weten lukken ...
deze is voor om publicaties van documenten in verschillende
talen te publiceren (er is ook onderscheid gemaakt tussen
tijdschriften omdat deze toch bepaalde meta data heeft.

en wat vinden jullie ervan???
Je hebt 2 tabellen met dezelfde Primary keyRusky schreef op 12 februari 2004 @ 14:53:
heb nu uit eindelijk een tabel structuur in elkaar gezet.
deze is voor om publicaties van documenten in verschillende
talen te publiceren (er is ook onderscheid gemaakt tussen
tijdschriften omdat deze toch bepaalde meta data heeft.
[afbeelding]
en wat vinden jullie ervan???
1:1 relatie is onzin, dat betekent dat het in dezelfde tabel gezet kan worden.Grijze Vos schreef op 10 februari 2004 @ 09:43:
1-1 relatie:
tabel1 heeft de PK van tabel2 als FK,
en tabel 2 heeft de PK van tabel1 als FK.
Hoho, dat ligt er maar net aan wat je wilt. Stel een medewerker mag één auto van de zaak hebben en een auto behoort maar tot één medewerker. Zet je de auto's dan bij de medewerkers? Of houd je twee tabellen, dan heb je nog hetvolgende probleem, komt de autoid bij de medewerker, of komt medid bij de auto.BrZ schreef op 12 februari 2004 @ 15:22:
1:1 relatie is onzin, dat betekent dat het in dezelfde tabel gezet kan worden.
Niet alle medewerkers zullen een auto hebben, dus apparte tabel met medid in de auto tabel lijkt mij.ZeRoXcOoL schreef op 15 februari 2004 @ 23:07:
[...]
Hoho, dat ligt er maar net aan wat je wilt. Stel een medewerker mag één auto van de zaak hebben en een auto behoort maar tot één medewerker. Zet je de auto's dan bij de medewerkers? Of houd je twee tabellen, dan heb je nog hetvolgende probleem, komt de autoid bij de medewerker, of komt medid bij de auto.
Are you following me, Are you following me?
Verwijderd
Dit is een mooi vraagstuk, want is het zo dat iedere medewerker standaard een auto heeft? Dat soort dingen moet je je nou afvragen als je een database ontwerpt en dus kom je in de meeste gevallen tot de conclusie dat dat niet zo is.ZeRoXcOoL schreef op 15 februari 2004 @ 23:07:
[...]
Hoho, dat ligt er maar net aan wat je wilt. Stel een medewerker mag één auto van de zaak hebben en een auto behoort maar tot één medewerker. Zet je de auto's dan bij de medewerkers? Of houd je twee tabellen, dan heb je nog hetvolgende probleem, komt de autoid bij de medewerker, of komt medid bij de auto.
De koffie-juffrouw komt met de fiets bijvoorbeeld.
En dan staat de medewerker_id in de tabel auto
Ik bemerk dat de topicstarter zich wil gaan verdiepen in SQL en het linken van tabellen een tip ipv:
SELECT id, achternaam FROM medewerker
doe om problemen te voorkomen
SELECT m.id AS id, m.achternaam AS achternaam FROM medewerker m
Bij veel programma's zie je ook dat bovenstaande suggestie is opgelost door de velden een prefix te geven als m_ welke vastgelegd is in het database ontwerp
Regel 1 van normalisatie: if it ain't dependent on the primary key it shouldn't be there.BrZ schreef op 12 februari 2004 @ 15:22:
[...]
1:1 relatie is onzin, dat betekent dat het in dezelfde tabel gezet kan worden.
Al hebben alle medewerkers een leaseauto: de properties van die auto horen niet in tabel Employee te hangen, want dan zou je een EmployeeID nodig hebben om een auto te identificeren in je tabel Boete, wat volledig conflicteert met alle concepten achter normalisatie.
Voor koppeltabellen zie trouwens ook [rml]curry684 in "[ SQL] bitselectie enum/set->algoritme *"[/rml].
Mwa, je kan ook te ver gaan met op splitsen. Dan zou je ook het adres van een medewerker in een aparte tabel kunnen zetten met daarin zijn postcode en huisnummer, waar je naar toe verwijst met een adresid oid.curry684 schreef op 16 februari 2004 @ 00:45:
[...]
Regel 1 van normalisatie: if it ain't dependent on the primary key it shouldn't be there.
Al hebben alle medewerkers een leaseauto: de properties van die auto horen niet in tabel Employee te hangen, want dan zou je een EmployeeID nodig hebben om een auto te identificeren in je tabel Boete, wat volledig conflicteert met alle concepten achter normalisatie.
Voor koppeltabellen zie trouwens ook [rml]curry684 in "[ SQL] bitselectie enum/set->algoritme *"[/rml].
Maar in geval van de lease auto kan het wel handig zijn, alhoewel ik eigenlijk weinig technische voordelen kan bedenken als je het splits, in het geval dat iedereen altijd 1 lease-auto heeft
NAW-gegevens horen inderdaad in een aparte tabel jaBrZ schreef op 16 februari 2004 @ 01:22:
[...]
Mwa, je kan ook te ver gaan met op splitsen. Dan zou je ook het adres van een medewerker in een aparte tabel kunnen zetten met daarin zijn postcode en huisnummer, waar je naar toe verwijst met een adresid oid.
En toen kwam op een dag iemand die wegens wat contractuele problemen 2 weken 2 leaseauto's op z'n naam had staan, of die net in dienst is en z'n auto nog in bestelling heeft...Maar in geval van de lease auto kan het wel handig zijn, alhoewel ik eigenlijk weinig technische voordelen kan bedenken als je het splits, in het geval dat iedereen altijd 1 lease-auto heeft
Design for the future, not for the past