[access2000] problemen met relaties tussen 2 tabellen

Pagina: 1
Acties:
  • 167 views sinds 30-01-2008
  • Reageer

  • DeRooney
  • Registratie: Oktober 2002
  • Laatst online: 20-02 14:59
Ik ben bezig om een database te bouwen met 2 tabellen. het gaat om een database waarin ik makkelijk bij kan houden welke nummers ik op cd gebrand heb voor mijn vader. daarvoor heb ik 2 tabellen:
tabel 1: cd's: bevat de velden: cd nummer, cd naam en datum
tabel 2: singles: bevat de velden: nummer [autonummering], artiest, titel, cd nummer, cd naam, tijdsduur en tracknummer

de velden: cd nummer en cd naam komen overeen.

Nu heb ik een relatie aangemaakt tussen de velden cd nummer

maar als ik dan in de tabel singles een nieuw nummer erbij wil tikken krijg ik een foutmelding:

de opgegeven wijzigingen aan de tabel zijn niet aangebracht omdat zij dubbele waarden zouden opleveren voor de index, primaire sleutel of relatie. Wijzig de gegevens in het veld of de velden die dubbele gegevens bevatten of definieer de index opnieuw.

Ik snap niet wat ik nu fout doe. Ik geef bij de tabel cd de naam van de cd op en het nummer ervan.
Bij iedere single vul ik in op welke cd ze staan en welk nummer deze cd heeft (1, 2,3 of 4).

Waarom kan access het op deze manier niet aan en wat zou er anders moeten?

  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 23-08 12:02
En hoe ziet je primary sleutel dan uit ?

  • DeRooney
  • Registratie: Oktober 2002
  • Laatst online: 20-02 14:59
ik had eerst als primaire sleutel het veld "cd nummer" gedaan (voor beide tabellen). Toen kreeg ik ook een error. Toen heb ik voor de tabel singles een auto nummering veld als primaire sleutel gedaan. maar de relatie was aangemaakt tussen beide cd nummer velden.

Ik had hem eerst gekoppeld en toen zag ik een plusje staan voor de records in de verschillende tabellen waar ik kon zien welke records eraan gekoppeld waren uit de andere tabel. Dat lukt nu ook niet.

  • rb338
  • Registratie: Januari 2001
  • Laatst online: 22-07 12:59
Je zegt een relatie te hebben tussen de velden cd nummer. Volgens mij is cd nummer 1 veld, waar is de relatie mee gelegd dan?

Daarnaast begrijp ik geen kont van je hele opzet.
Heb je toevallig wel een datamodelletje en een relatiediagram gemaakt?

Snap niet waarom je verschillende tabellen voor cd's en singles hebt en waarom je een relatie ertussen maakt. En snap ook niet dat je, ondanks die relatie, 2x cd naam hebt...

  • EnnaN
  • Registratie: September 2002
  • Laatst online: 21-08 07:59

EnnaN

Toys in the attic

ik zie niet precies wat je probleem nu is, maar je moet ervan bewust zijn wat een primaire sleutel doet: een primaire sleutel mag nooit 2x in 1 tabel voorkomen...

dus de melding betekend heel simpel: er is een veld wat uniek moet zijn niet uniek. Nu zijn er 2 oplossingen: of je zorgt ervoor dat het veld niet uniek hoeft te zijn (doe dit alleen als dit ook echt klopt, je moet even een schema maken van wat waar staat, en wat uniek is/moet zijn) OF je zorgt ervoor dat als het veld uniek zou moeten zijn, er dus ook geen dubbele waarden in komen te staan.

teken voor je zelf dus even uit wat de unieke waarden voor een tabel zijn, hoe je de verschillende dingen identificeert etc, en ga vanaf daar verder

sig


  • DeRooney
  • Registratie: Oktober 2002
  • Laatst online: 20-02 14:59
Ik heb nu de cd's tabel verwijderd. Dus alles staat nu in de tabel singles. Met daarbij de info op welke cd het staat en welk track nummer het heeft. Het is de bedoeling voor als er een groot aantal cd's gemaakt is, dat het makkelijk is op te zoeken welk nummer op welke cd staat, zodat er niet nummers op meerdere cd's komen te staan.

  • EnnaN
  • Registratie: September 2002
  • Laatst online: 21-08 07:59

EnnaN

Toys in the attic

tjah, dan zou het toch zo moeten kunnen:

tabel1:
cdnummer (uniek, sleutel, evt autonummer)
cdnaam
cddatum
cdlokatie (kast, auto, slaapkamer :) )

tabel2
trackID (uniek, sleutel, evt autonummer)
trackartiest
tracknaam
orginele_lokatie (intarweb, eigenCD, buurman, liveopname)
gebrande_lokatie (deze is dus Niet uniek, geen sleutel)


en dan is gebrande_lokatie dus een cdnummer, dus moet er een relatie tussen gebrande_lokatie en cdnummer... Dit is een one-to-many relatie (aante passen in acces door op de relatie met je rechtermuisknop te drukken) waarbij het one gedeelte natuurlijk bij de tabel1 staat (die is immers uniek per cdnummer!) en de many bij table2 (er zijn immers meerdere nummers uit tabel2 die op 1 cd uit tabel 1 staan) ..

dan moet het goed gaan.

sig


  • rb338
  • Registratie: Januari 2001
  • Laatst online: 22-07 12:59
Kan je dan niet beter 3 tabellen maken:
Originele CD's --> alle info over de CD (pk: cdnr)
Nummers --> alle liedjes van alle cd's (pk: tracknr fk: cdnr)
Gebrande CD's --> de gebrande cd's (pk: cdrnr, fk: tracknr)

  • DeRooney
  • Registratie: Oktober 2002
  • Laatst online: 20-02 14:59
ik heb de tabellen aangepast. de tabel cd heeft een veld cd nummer (autonummering) (PK), cd naam en datum. de tabel tracks heeft nu de velden: nummer id, track nummer, artiest, titel, tijdsduur, originele cd

maar nog krijg ik de eerder genoemde error. als ik een 2e nummer intik in de tabel tracks die ook op cd1 staat. dus ook nummer id 1 heeft, evenals het eerste nummer.

[edit] ik heb nu de pk van cd gekoppeld aan het veld nummer id, maar ik heb een extra veld toegevoegd aan die tabel met track id, deze wordt automatisch genummerd. Dit veld track id is de PK nu. en nu doet ie het wel. Alleen ik had het net al op de zelfde manier, maar toen lukte het niet...

[ Voor 29% gewijzigd door DeRooney op 04-03-2005 13:56 ]

Pagina: 1