[Database] Ontwerp probleempje

Pagina: 1 2 Laatste
Acties:
  • 361 views sinds 30-01-2008
  • Reageer

  • iAR
  • Registratie: November 2000
  • Niet online
Ik zit met een probleempje (wanneer niet?) :z
Ik ben bezig een database te maken voor iemand die films wil opslaan. Bij één titel moeten max 2 regisseurs opgegeven kunnen worden en een x aantal acteurs.
Maar er moet ook weer makkelijk op gezocht worden. Dus zoeken op Brad Pitt moet al z'n films geven.
In een formulier (wat er ook bij moet) moet niet 10 keer door een leeg vak ge-tab-t worden als je maar één acteur per film weet... dus een vast aantal tabellen is het niet.
Hoe kun je nou beetje op correcte database manier dit oplossen? Wat ook makkelijk invoerd?!
Iemand een idee?

  • the_bbk
  • Registratie: Oktober 2001
  • Niet online
Hiervoor moet je twee nieuwe tabellen maken, waarvan de eerste tussen film en regissteur komt te staan, en de ander tussen film en acteur. In deze tabbellen moet je telkens de primaire sleutel van een film en die van de regisseur (of acteur) opnemen.

Dat komt er dan zo uit te zien:
code:
1
tabelnaam: regisseur - regiseert - film - speeltin - acteur

De primaire sleutel van regisseur is bv r_code, die van film f_code en die van acteur r_code. In de tabellen "regiseert" en "speeltin" worden dan de combinaties van deze sleutels opgenomen, dus welke acteurs er in de film spelen (speeltin) en welke regisseurs er per film zijn (regiseert).

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Hmm even uit het losse handje..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
tFilm
-----
fID - uniek ID voor de film
fTitle - titel van de film
fOpmerkingen - wat extra film-specifieke velden

tRegiseur
---------
rID - uniek ID voor de regiseur
rName - naam van de regiseur
rGeboorteDatum - of iets anders intressants :)

tActeur
-------
aID - uniek ID voor de acteur
aName - naam van de akteur
aSchoenmaat - of iets anders zinnigs

tFilmActeur
-----------
fID - filmID
aID - acteurID

tFilmRegiseur
-------------
fID - filmID
rID - regiseurID

In de FilmActeur en FilmRegiseur tabellen leg je dus de koppeling tussen de Acteur en Regiseur en de film.
In de database moet je niet hard bepalen dat er maar 2 regiseurs bij 1 film mogen horen. Heb je straks opeens een film met 3 regiseurs, kun je je db aanpassen, dat wil je niet.
En als Brat P. bv ID 1 heeft, kun je dus heel makkelijk alle films selecteren waar hij in speelt door SELECT fID FROM tFilmActeur te doen. En hetzelfde met tFilmRegiseur als blijkt dat ie ook films regiseert. Eigenlijk zou je Regiseurs en Acteurs misschien wel samen willen voegen, aangezien er ook acteurs zijn die regiseren (en andersom), en door middel van een vlaggetje aangeven of ie regiseert of acteert.
Dus zou je zoiets krijgen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
tFilm
-----
fID - uniek ID voor de film
fTitle - titel van de film
fOpmerkingen - wat extra film-specifieke velden

tPersoon (moet wat verzinnen :P)
--------
pID - uniek ID
pNaam - naam
pAndereInfo


tFilmPersoon
-----------
fID - film ID
pID - persoon ID
AlsActeur - ja/nee (boolean) veld

(ok Persoon is een foute naam maar ja weet ff niks beters)
Zo kun je dus in de persoon tabel opzoeken wat het id van Brat Pit is, kun je met dat ID in de FilmPersoon zoeken om alle film ID's op te halen, als je wilt als acteur is je voorwaarde WHERE AlsActeur = True (of 1, afhankelijk van je database), en als regiseur met WHERE AlsActeur = False.
Dit is uiteraard in 1 query te doen, maar als je het in 3 query's kan is het daarna een kwestie van samenvoegen.

Is denk ik (gevoelsmatig) niet helemaal perfect, maar ik heb de hele dag al nagedacht dus ik vind het nu wel weer ff genoeg... het lijkt me iig een aardig uitgangs punt.
En als je ook nog wilt bijhouden of Brat Pit als visagist heeft gewerkt bij een film, wordt het tijd om een functietabel te maken (akteur, regiseur, set-opvulling, koffiejuffrouw) en het AlsActeur een verwijzing te laten bevatten naar die functietabel.

Overigens is dit meer een [forum=14] vraagje.

Exact expert nodig?


  • DR
  • Registratie: December 2000
  • Niet online

DR

-->P&W

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Je moet er natuurlijk wel rekening mee houden dat een persoon _en_ acteur _en_ regisseur kan zijn. Dan komen er gegevens dus dubbel voor, en dat moet je zoveel mogelijk voorkomen!
2 mogelijkheden (vast nog wel meer):
1. (model-technisch gezien de mooiste en de ingewikkelste)
maak een aparte tabel welke de verschillende types personen bevat en dan nog een koppel tabel naar je personen tabel omdat hier sprake is van een n-op-n relatie (1 persoon kan meerdere types zijn, maar 1 type kan bij meerdere personen horen)

2. Maak een veldje in je persoontabel welke aangeeft of je persoon een acteur, een regisseur of beide is

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Op woensdag 17 april 2002 19:09 schreef zerosignal het volgende:
Ik zit met een probleempje (wanneer niet?) :z
Ik ben bezig een database te maken voor iemand die films wil opslaan. Bij één titel moeten max 2 regisseurs opgegeven kunnen worden en een x aantal acteurs.
Maar er moet ook weer makkelijk op gezocht worden. Dus zoeken op Brad Pitt moet al z'n films geven.
In een formulier (wat er ook bij moet) moet niet 10 keer door een leeg vak ge-tab-t worden als je maar één acteur per film weet... dus een vast aantal tabellen is het niet.
Hoe kun je nou beetje op correcte database manier dit oplossen? Wat ook makkelijk invoerd?!
Iemand een idee?
Leer eerst even een ERD ofzo tekenen. Dit is dus echt niveau 0,0. Je maakt gewoon een tabel voor je films, een voor je regisseurs en een voor je acteurs. Omdat het om 1:n relaties gaat tussen films en regisseurs en films en acteurs heb je hier nog 2 extra tabellen voor nodig.

En om het correct in een form af te beelden gebruik je een grid. Volgens mij ben je in Access bezig, of heb ik dat verkeerd? Access zuigt zwaar.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Jammer Destruction_Dimbo dat je jezelf met deze post nog onder het niveau 0,0 hebt gedefinieerd.
Het betreft dus niet een 1:n relatie, maar een n:m relatie.

Netste oplossing is (zie ook boven):
Film met n:m naar persoon.
bij de verzelfstandige relatie hou je ook de rol bij die de persoon vervult.
Als een persoon zowel acteur als regiseur is, ontstaan er dus twee relaties tussen de persoon en de film met ieder een andere rol.

Suc6
Op donderdag 18 april 2002 10:45 schreef Destruction_Dimbo het volgende:

[..]

Leer eerst even een ERD ofzo tekenen. Dit is dus echt niveau 0,0. Je maakt gewoon een tabel voor je films, een voor je regisseurs en een voor je acteurs. Omdat het om 1:n relaties gaat tussen films en regisseurs en films en acteurs heb je hier nog 2 extra tabellen voor nodig.

En om het correct in een form af te beelden gebruik je een grid. Volgens mij ben je in Access bezig, of heb ik dat verkeerd? Access zuigt zwaar.

  • iAR
  • Registratie: November 2000
  • Niet online
Het is inderdaad Access and so it is! :)

Wordt dus best wel tricky om zo'n tabelletje in elkaar te zetten met een formpje erbij! ;)
Op zich klinkt het best logisch zoals Crazy_D heeft gedaan. Maar om dat om te zetten naar een formpje *Sugt* Want je moet dus met allemaal codes werken?!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op donderdag 18 april 2002 13:28 schreef zerosignal het volgende:
Het is inderdaad Access and so it is! :)

Wordt dus best wel tricky om zo'n tabelletje in elkaar te zetten met een formpje erbij! ;)
Op zich klinkt het best logisch zoals Crazy_D heeft gedaan. Maar om dat om te zetten naar een formpje *Sugt* Want je moet dus met allemaal codes werken?!
Tjah hoe je dat handig op een form zet cq.kan zetten in Access weet ik niet, ik neem aan dat Access wel wat handige manieren heeft om een 1-n aantal items (bv acteurs bij een film) in te voeren/selecteren. Om aan te geven (als je het met een aparte "functies" (acteur, registeur, koffiedame) doet, hoef je natuurlijk geen ID in te voeren als verwijzing, daar maak je een comboboxje voor (of je deelt je form op in een aantal delen, "acteurs bij de film", "regiseurs van de film", etc.

Exact expert nodig?


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

* drm vindt crazy_d's eerste 2 oplossingen niet zo netjes...

Als je nu nog andere relaties tussen Film en Persoon gaat leggen moet je nieuwe tabellen toevoegen. => :r

Als je een tabel "Baan" (ofzo :z) toevoegt:
code:
1
2
3
tabel Baan
baanID
name

En daar vul je vervolgens 'Regisseur', 'Acteur', 'Art Director', etc... in

vervolgens de koppeltabel:
code:
1
2
3
persoonID  // <-- Wie?
filmID     // <-- Welke film?
baanID     // <-- Wat deed hij daar?

Welke dus 1 samengestelde Primary Key is.

Da's imo de netste oplossing

edit:
Crazy_D:
Eyy da's toch wat ik als laatste nog zei, als je ook de koffiejuffrouw en de visagistes wilt bijhouden ;)
O-)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op donderdag 18 april 2002 14:51 schreef drm het volgende:
Als je een tabel "Baan" (ofzo :z) toevoegt:
code:
1
2
3
tabel Baan
baanID
name

En daar vul je vervolgens 'Regisseur', 'Acteur', 'Art Director', etc... in

vervolgens de koppeltabel:
code:
1
2
3
persoonID  // <-- Wie?
filmID     // <-- Welke film?
baanID     // <-- Wat deed hij daar?

Welke dus 1 samengestelde Primary Key is.
Eyy da's toch wat ik als laatste nog zei, als je ook de koffiejuffrouw en de visagistes wilt bijhouden ;)

Exact expert nodig?


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

*kuch* ik zei toch niks? ;)

[sub]
* drm geeft Crazy_D gelijk :)[/sub]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • iAR
  • Registratie: November 2000
  • Niet online
Oke, nou heb ik dus die tabellen aangemaakt volgens Crazy_D's methode... ik neem aan dat ik de relatie's moet leggen: i did.

MAar euhm [leekmode] hoe krijg ik nou dat ik in een formulier de zooi ook goed invuld? :/
[/leekmode]

Verwijderd

Op donderdag 18 april 2002 14:51 schreef drm het volgende:
code:
1
2
3
tabel Baan
baanID
name

En daar vul je vervolgens 'Regisseur', 'Acteur', 'Art Director', etc... in
Kleine toevoeging: Zet er dan meteen een kolom 'SorteerVolgorde' bij. Dan kan je er ook meteen voor zorgen dat de regiseur(s) of juist de koffiejuffrouw bovenaan komt te staan...

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op vrijdag 19 april 2002 09:06 schreef Debbus het volgende:

[..]

Kleine toevoeging: Zet er dan meteen een kolom 'SorteerVolgorde' bij. Dan kan je er ook meteen voor zorgen dat de regiseur(s) of juist de koffiejuffrouw bovenaan komt te staan...
* Goodielover kan niet lezen, laat maar... sorry

  • iAR
  • Registratie: November 2000
  • Niet online
Op vrijdag 19 april 2002 08:51 schreef zerosignal het volgende:
Oke, nou heb ik dus die tabellen aangemaakt volgens Crazy_D's methode... ik neem aan dat ik de relatie's moet leggen: i did.

MAar euhm [leekmode] hoe krijg ik nou dat ik in een formulier de zooi ook goed invuld? :/
[/leekmode]
:'( Waarom lukt dit niet?

  • Pogostokje
  • Registratie: September 2001
  • Laatst online: 06-09 19:17

Pogostokje

* twiet *

Maar euhm [leekmode] hoe krijg ik nou dat ik in een formulier de zooi ook goed invuld? :/
[/leekmode]
Hm. Heb jij sowieso wel eens een database opgezet in Access?? Het is nou ook weer niet zo dat je 1,2,3 een database hebt hoor. Er zijn behoorlijke dikke boeken over te vinden en dan heb je daarnaast ook nog de Visual Basic code die je kan gebruiken die goed zijn voor enkele dikke boeken.

Access heeft veel weg van Visual Basic alleen zitten de database-acties al min of meer verweven met je code. Maar maak niet de fout dat je zonder kennis van databases zelf (ERD zei je niks geloof ik :)) of wat kennis van access ('hoe werken formpjes') denk dat je even snel iets goeds in elkaar fietst. :)

... ook ik heb soms per ongeluk gelijk.


  • iAR
  • Registratie: November 2000
  • Niet online
Ik weet wel wat een ER diagram is, één op veel relaties zegt me ook wel iets, forms kan ik wel maken en ik kan beetje vb/vba.
Op zich is dit een simpele database... ben alleen niet zo handig in die relatie zooi en het opbouwen van die dingen. Daarom stel ik ook de vraag! :)

Btw: ik weet wel dat je niet zomaar een database inelkaar hebt...

  • iAR
  • Registratie: November 2000
  • Niet online
Goed, na te lang proberen wil het nog niet.
Ik heb een database als boven in de relaties is aangegeven.
Ik heb geprobeerd om een formulier te maken zoals op het plaatje (deze is heel simpel als voorbeeld). Bij het invoeren moet je dus de filmnaam opgeven en de acteur(s). En dat moet dan ook opgeslagen worden.
Er is geen enkele mogelijkheid dat Access dat dus hier opslaat...
Er zou dus een probleem in de relaties kunnen zitten (?)... maar toe nik er over na ging denken zat ik gewoon muur vast...

Dus iemand die me verder kan helpen?

Afbeeldingslocatie: http://www.endoria.net/upload/index.php/2325049035

Verwijderd

Als je nu een formulier maakt met alleen de gegevens van de film en dan ga je een subformulier invoegen. Volgens mij vraagt ie dan automatisch welke relatie die heeft tot de film. Dat is alles, ik kan het niet controleren op dit moment omdat mijn Access erg brak is en de wizards niet werken.
Dit werkt wel, anders moet je het aangeven bij eigenschappen ofzo.

  • iAR
  • Registratie: November 2000
  • Niet online
Op woensdag 24 april 2002 01:38 schreef dapib het volgende:
Als je nu een formulier maakt met alleen de gegevens van de film en dan ga je een subformulier invoegen. Volgens mij vraagt ie dan automatisch welke relatie die heeft tot de film. Dat is alles, ik kan het niet controleren op dit moment omdat mijn Access erg brak is en de wizards niet werken.
Dit werkt wel, anders moet je het aangeven bij eigenschappen ofzo.
Zoals in het plaatje al is te zien (acteurs is een subform). Maar dan slaat ie dus die acteurs niet bij de titel op... :?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op dinsdag 23 april 2002 19:37 schreef zerosignal het volgende:
Goed, na te lang proberen wil het nog niet.
[..]
Dus iemand die me verder kan helpen?
[..]
Ik zou zeggen, begin eens met de onnodige ID's weg te halen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Het probleem van Access is dat dit allemaal te veel voor je doet. Wanneer je een goede database gebruikt (MySQL, Oracle)kun je de relatie *echt* zelf definieren.

Ik ben ook al eens tegen zo een soort probleem opgelopen. Ik wilde ook velden koppelen en subformulieren gebruiken.

Toen kon ik java programmeren en SQL en ben heb ik mijn hart verloren aan Oracle en (op de client kant) een java applicatie

  • iAR
  • Registratie: November 2000
  • Niet online
Nogmaals: ik heb alleen Access en het moet ook in Access... en ik weet dat het in Access kan. Blijkbaar is het lastig, maar goed... ooit zal het zover komen!

ID's weg, welke en dan? ;)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

de overbodige ID's :P

Of heb je soms een goede reden waarom je "faID" en "frID" gebruikt?

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Uiligheid
  • Registratie: December 2000
  • Laatst online: 20-08 15:21

Uiligheid

alle gekheid op een stokje

Het is mij ook allemaal niet duidelijk.. waarom heeft een film meerder regissuers dan?

Probeer eens te beginnen met een leuke ORM Methode, bijvoorbeeld NIAM, met case-tool FCO-IM, dan even normaliseren tot de 4e normaalvorm, en dan je access databaseje bouwen. Is de handel meteen onderhoudbaar. :7

Maar op een meer serieus niveau, een film heeft meerdere actuers, en 1 regisseur.. (ff snel he) Waarom heb jij dan 5 tabellen? En inderdaad, door de ID's zie je de primary key niet meer...

Ceterum censeo Carthaginem esse delendam


  • iAR
  • Registratie: November 2000
  • Niet online
'k heb Crazy_D's structuur "gebruikt" en wat zitten kloten met een voorbeeld database van Access zefl, vandaar kom ik op zoveel tabellen en ID's.

En een animatie film heeft meestal meerdere regisseurs :)
En er was nog plan om meerdere functies (camera / muziek) toe te voegen, maar pff! ;)

Ik begrijp dat er een tabel moet komen waarin alle zooi staat, en dus de acteur ID ('s) en regisseur ID ('s) die vervolgens in een ander tabel staan?!
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
tFilm
-----
fID - uniek ID voor de film
fTitle - titel van de film
fPlot - wat extra film-specifieke velden
rID - regiseurID
aID - acteurID

tRegisseur
---------
rID - uniek ID voor de regiseur
rName - naam van de regiseur

tActeur
-------
aID - uniek ID voor de acteur
aName - naam van de akteur

Dan heb je nog maar 3 tabellen... En dan kun je dus ook nog makkelijk een extra tabel erbij gooien waarin je componisten en camera mensen opneemt?
Of is dit weer niet mogelijk?

Verwijderd

Dat is zeker niet de bedoeling, als je acteur en regisseur idŽs op gaat slaan in de filmtabel, dan sla je dus bijvoorbeeld 20 keer de gegevens van de film op. Je vorige ontwerp was beter, alleen zou ik de IDŽs van filmacteur en filmregisseur laten vervallen. Ik snap eigenlijk je probleem niet, als ik tijd heb zal ik thuis eens kijken, ben nu op mijn werk.

  • iAR
  • Registratie: November 2000
  • Niet online
Op woensdag 24 april 2002 11:52 schreef remedy70 het volgende:
Dat is zeker niet de bedoeling, als je acteur en regisseur idŽs op gaat slaan in de filmtabel, dan sla je dus bijvoorbeeld 20 keer de gegevens van de film op. Je vorige ontwerp was beter, alleen zou ik de IDŽs van filmacteur en filmregisseur laten vervallen. Ik snap eigenlijk je probleem niet, als ik tijd heb zal ik thuis eens kijken, ben nu op mijn werk.
Het probleem: met mijn matig kennis is het een crime om een goede database in access te maken en door al die ideeën, tips en post raak ik een beetje de weg kwijt...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Goed, begin eens met normaliseren dan. Pleur je oude database en al de oude ideeen weg, want anders raak je weer in de war.


Eerste stap is de gegevensverzameling. Welke gegevens heb je allemaal? Denk aan "Mensen", "Banen", "Films", "Rollen", en alles wat er mee te maken heeft. ("Voornaam", "Achternaam", "Rol", "Naam Film", etc...) Som dit op.

Post dat hier en dan gaan we verder :)

[sub]
* drm vermoedt dat dit een tutorial topic gaat worden ;)[/sub]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • iAR
  • Registratie: November 2000
  • Niet online
*opsom* volgens mij moeten dit ze zijn:
titel
land
jaar
genre
studio
acteurs
regisseurs
crewoverig (is: functie & naam)
plot
info
gezien
mening
cijfer
imdb
own
medium

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

In een 1e oogopslag ziet dat er aardig compleet uit.
Dan wordt het tijd voor Database Normalization And Design Techniques :)

Exact expert nodig?


  • Uiligheid
  • Registratie: December 2000
  • Laatst online: 20-08 15:21

Uiligheid

alle gekheid op een stokje

Volgens mij ben je niet helemaal compleet. Wat houdt je bijvoorbeeld bij van een regisseur, en van een acteur?

Als je nou eens zinnetjes gaat maken.
(klink misschien neerbuigend, maar niet zo bedoelt.)

Een acteur heeft voornaam Jan
Een acteur heeft achternaam Klok

Een film heeft regisseur Paul
Een film heeft actuer Jan

Een regisseur heeft naam Paul

enz enz.
Dan kom je waarschijnlijk op iets als het volgende:

1 film heeft meerdere acteurs en een film heeft meerdere regisseurs.

Volgens mij moet je uitkomen op 3 tabellen.
Maar er is hier natuurlijk een heleboel documentatie over te vinden, en het begrip van een relationele database (of mapping van OO naar relationeel (8> ) moet er wel goed inzitten.

Ceterum censeo Carthaginem esse delendam


  • iAR
  • Registratie: November 2000
  • Niet online
Normaliseren... :r
Mjah, hoe ging dat ook alweer...
Op woensdag 24 april 2002 13:14 schreef seilander het volgende:
1 film heeft meerdere acteurs en een film heeft meerdere regisseurs.

Volgens mij moet je uitkomen op 3 tabellen.
Maar er is hier natuurlijk een heleboel documentatie over te vinden, en het begrip van een relationele database (of mapping van OO naar relationeel (8> ) moet er wel goed inzitten.
Mjah, ik begrijp je punt. Maar ik heb het wel duidelijk dat een film meerdere acteurs heeft, meerdere regisseurs heeft.
Verder zijn alle items 1 per film.
Overige crew kan alleen meerdere items bevatten.

tog? :)

Verwijderd

Heb ff access van een of andere pc getoverd hier en snel iets opgezet, klopt je email?

  • iAR
  • Registratie: November 2000
  • Niet online
Op woensdag 24 april 2002 13:38 schreef remedy70 het volgende:
Heb ff access van een of andere pc getoverd hier en snel iets opgezet, klopt je email?
Ja?!

Verwijderd

check je mail

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op woensdag 24 april 2002 13:48 schreef remedy70 het volgende:
check je mail
Als het kan aub via dit topic. Dit zou weleens een mooi "verwijs topic" kunnen worden voor hoe mensen een db kunnen opzetten (mits deze uiteindelijk natuurlijk goed is).

Exact expert nodig?


  • iAR
  • Registratie: November 2000
  • Niet online
Op woensdag 24 april 2002 13:55 schreef Crazy_D het volgende:
Als het kan aub via dit topic. Dit zou weleens een mooi "verwijs topic" kunnen worden voor hoe mensen een db kunnen opzetten (mits deze uiteindelijk natuurlijk goed is).
Moeten we met z'n allen zorgen dat het goed komt (heb ik er ook nog wat aan) ;) :)
Anyway, het was dus een databeesje in de mail. Ik ben nu aan het werk dus ik kijk vanavond wel ff uitgebreid. Ik geloof (snel gekeken) dat het alleen ff opzetje van tabellen is...

relaties van db (mail):
Afbeeldingslocatie: http://www.endoria.net/upload/index.php/2609877604

Verwijderd

opzetje van tabellen en forms staat in de db. Niet via dit topic omdat ik op het werk ben en dus
a. weinig tijd heb
b. erg beperkt ben wat internet / programmatuur betreft.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 24 april 2002 13:14 schreef zerosignal het volgende:
[..]
Verder zijn alle items 1 per film.
Overige crew kan alleen meerdere items bevatten.

tog? :)
Waarom zijn er dan zoveel films die moeilijk in EEN bepaald genre geplaatst kunnen worden maar er eigenlijk tussen zweven ?

En weet je zeker dat je uiteindelijk maar EEN mening per film wilt hebben, wat gebeurd er zodra er een vriend ook wel eens een mening over een film wilt geven, dat ga je dan niet opslaan ? of allemaal in dezelfde veld ? :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • iAR
  • Registratie: November 2000
  • Niet online
Op woensdag 24 april 2002 14:15 schreef dusty het volgende:
Waarom zijn er dan zoveel films die moeilijk in EEN bepaald genre geplaatst kunnen worden maar er eigenlijk tussen zweven ?

En weet je zeker dat je uiteindelijk maar EEN mening per film wilt hebben, wat gebeurd er zodra er een vriend ook wel eens een mening over een film wilt geven, dat ga je dan niet opslaan ? of allemaal in dezelfde veld ? :+
Ik maak wel een genre "Romantisch SF Actie Animatie" :)
Eén mening is genoeg... i know!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 24 april 2002 13:59 schreef zerosignal het volgende:
[..]
relaties van db (mail):
[afbeelding]
Uiteraard is de "Functienaam" relatie verkeerd. Daar maak je een Relatie_ID van die de twee tabellen aan elkaar koppelt. en niet "Functienaam" die de tabellen aan elkaar moet koppelen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 24 april 2002 14:19 schreef zerosignal het volgende:
[..]
Ik maak wel een genre "Romantisch SF Actie Animatie" :)
[..]
Veel plezier met de search engine snel te maken :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Op woensdag 24 april 2002 14:30 schreef dusty het volgende:

[..]

Uiteraard is de "Functienaam" relatie verkeerd. Daar maak je een Relatie_ID van die de twee tabellen aan elkaar koppelt. en niet "Functienaam" die de tabellen aan elkaar moet koppelen.
Kan je dat ook nog onderbouwen? Uiteraard .... is namelijk niet echt een sterk argument.

Waarom zou je nog een ID maken als de functienaam al uniek is? Ik kan je vertellen waarom: om onnodig gegevens op te slaan. Een relatie kan bestaan tussen alle soorten velden, daar is geen ID voor nodig.

  • iAR
  • Registratie: November 2000
  • Niet online
Op woensdag 24 april 2002 14:30 schreef dusty het volgende:
Uiteraard is de "Functienaam" relatie verkeerd. Daar maak je een Relatie_ID van die de twee tabellen aan elkaar koppelt. en niet "Functienaam" die de tabellen aan elkaar moet koppelen.
Dit zie ik dus niet?! :/ Die functie naam is, zoals remedy70 al zegt, uniek...
Al snap ik weer niet hoe het precies zit (met enz).

Verwijderd

Op woensdag 24 april 2002 14:19 schreef zerosignal het volgende:

[..]

Ik maak wel een genre "Romantisch SF Actie Animatie" :)
Eén mening is genoeg... i know!
Ook hiervoor is een simpele oplossing die gezocht moet worden in de stappen van het normaliseren.

In principe is er een n op m relatie tussen genre en film, net zoals er een n op m relatie tussen persoon en film is. Wat je dus moet doen is er een tabel tussenhangen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
------       -----------        ------
ŜgenreŜ---------<ŜfilmgenreŜ>---------ŜfilmŜ
------       -----------        ------

genre bestaat uit
genrenaam PK

Filmgenre bestaat uit
genrenaam PK FK
Film ID PK FK

Film ken je al

Verwijderd

Op woensdag 24 april 2002 14:44 schreef zerosignal het volgende:

[..]

Dit zie ik dus niet?! :/ Die functie naam is, zoals remedy70 al zegt, uniek...
Al snap ik weer niet hoe het precies zit (met enz).
die enz staat er alleen maar omdat ik te lui cq niet inventief genoeg was om meer attributen te bedenken die daar thuis horen en die mag je dus zelf invullen.

  • iAR
  • Registratie: November 2000
  • Niet online
Ehm dat van dat genre was een grapje... maar goed: om het tot een goede database te maken kun je natuurlijk meerdere genres opgeven per film...

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 24 april 2002 14:40 schreef remedy70 het volgende:
[..]
Kan je dat ook nog onderbouwen? Uiteraard .... is namelijk niet echt een sterk argument.
Ik zie niet waar ik op de eerste plaats al een argument heb gegeven.

Het komt neer op simpel normaliseren, de functie naam kan 'erg' makkelijk veranderen.
Waarom zou je nog een ID maken als de functienaam al uniek is? Ik kan je vertellen waarom: om onnodig gegevens op te slaan. Een relatie kan bestaan tussen alle soorten velden, daar is geen ID voor nodig.
Volgens de actors guild mag er ook maar EEN acteur zijn met dezelfde voor en achternaam. Waarom gebruik je die voornaam en achternaam dan ook niet als FK in de andere tabel?

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Op woensdag 24 april 2002 14:40 schreef remedy70 het volgende:

[..]

Kan je dat ook nog onderbouwen? Uiteraard .... is namelijk niet echt een sterk argument.
Gewoon veiligheidje .. stel je hebt een aantal mensen er in staan die als rol Regei hebben staan, dan is het makkelijker/veiliger te veranderen naar Regie op die manier.

Verwijderd

Op woensdag 24 april 2002 14:54 schreef dusty het volgende:

[..]

Ik zie niet waar ik op de eerste plaats al een argument heb gegeven.

Het komt neer op simpel normaliseren, de functie naam kan 'erg' makkelijk veranderen.
[..]

Volgens de actors guild mag er ook maar EEN acteur zijn met dezelfde voor en achternaam. Waarom gebruik je die voornaam en achternaam dan ook niet als FK in de andere tabel?
Als die functienaam verandert, wordt er een cascade update gedaan, dus dat is geen argument.

Waarom ik daar bij personen niet voor kies lijkt me duidelijk:

a. De tabel heet personen en niet actors. Er staat dus meer in dan alleen acteurs. Een acteur zou dezelfde naam kunnen hebben als een regieassistent.
b. Nu sla je maar één ID-tje op in de rol tabel per combinatie persoon/film/functie, als je voor voornaam / achternaam kiest als referentiele integriteit sla je dus iedere keer die 2 velden op.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op woensdag 24 april 2002 15:07 schreef remedy70 het volgende:
Als die functienaam verandert, wordt er een cascade update gedaan, dus dat is geen argument.
Wil ik niet bijdehand overkomen, maar dan heeft normalizeren geen zin meer. Kun je net zo goed alles in 1 tabel stoppen, en als de filmtitel toch anders moet zijn, gewoon tig records updaten i.p.v. eentje :) Imho (mjah ik ben geen superexpert) is 1 van de dingen die je wilt, dat je iets maar op 1 plek hoeft te updaten. Functies-tabel dus. Als je de functienaam ook opneemt in je koppeltabel, valt er niet zo heel veel meer toe te voegen in je functies-tabel ;)

Exact expert nodig?


Verwijderd

Op woensdag 24 april 2002 15:13 schreef Crazy_D het volgende:

[..]

Wil ik niet bijdehand overkomen, maar dan heeft normalizeren geen zin meer. Kun je net zo goed alles in 1 tabel stoppen, en als de filmtitel toch anders moet zijn, gewoon tig records updaten i.p.v. eentje :) Imho (mjah ik ben geen superexpert) is 1 van de dingen die je wilt, dat je iets maar op 1 plek hoeft te updaten. Functies-tabel dus. Als je de functienaam ook opneemt in je koppeltabel, valt er niet zo heel veel meer toe te voegen in je functies-tabel ;)
Of er iets toe te voegen valt of niet heb ik in het midden gelaten (vandaar enz). Waarom die tabel er in eerste instantie is, is gebruiksgemak. In de Rol-form kun je dan gebruik maken van een dropdownlist en voorkom je dat je door een typefout foutieve gegevens op gaat slaan.
edit:
Een domein is minder handig, je moet dan als je een nieuwe functie tegenkomt het domein aan gaan passen. In mijn voorstel hoeft dat niet, alleen even een voorkomen toevoegen in functie is genoeg


En voor die cascade update hoef je niets te doen, behalve hiermee rekening te houden als je de relatie definieert. Access neemt die updates dan voor zijn rekening en daar merk je helemaal niets van.

  • iAR
  • Registratie: November 2000
  • Niet online
Dus wat doen we? :D Hihi... ;)

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op woensdag 24 april 2002 15:13 schreef Crazy_D het volgende:

[..]

Wil ik niet bijdehand overkomen, maar dan heeft normalizeren geen zin meer. Kun je net zo goed alles in 1 tabel stoppen, en als de filmtitel toch anders moet zijn, gewoon tig records updaten i.p.v. eentje :) Imho (mjah ik ben geen superexpert) is 1 van de dingen die je wilt, dat je iets maar op 1 plek hoeft te updaten. Functies-tabel dus. Als je de functienaam ook opneemt in je koppeltabel, valt er niet zo heel veel meer toe te voegen in je functies-tabel ;)
Dit is ***censuur***, oh nee dat mag ik niet zeggen:
Dit is niet waar.
Jij (Crazy_D) normailiseert niet, hij (remedy70) heeft wel degelijk nu genormaliseerd.
Hij kiest ervoor de lijst van functies te laten verwijzen door de naam. Niets mis mee, mits je de update inderdaan netjes cascadeert. Als je een codetabel hebt met 5 statussen is het niet vreemd om een letter te gebruiken om die status aan te geven. In mijn ogen heeft het niets met normalisatie te maken.

Verwijderd

Ik ben overigens helemaal geen database of ontwikkel expert, ik heb er nauwelijks kaas van gegeten :o. Ik ben maar een informatieanalist die ooit eens met access gestoeid heeft, dus over ontwerpbeslissingen kan ik je nog wel het een en ander vertellen (zou wel moeten met meer dan 10 jaar ervaring :Y)).

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

remedy70>

Ook ik ben geen superexpert, maar als je zo gaat redeneren over databases dan heeft het inderdaad geen zin meer om te normaliseren.

1 van de redenen dat je normaliseert is dat je gegevens zo efficient mogelijk opgeslagen worden. Als je dan strings of char-velden so you wish als keys gaat gebruiken, vertelt simpele computerarchitectuur je dat dat niet de meest efficiente manier is. Gehele getallen nemen naar verhouding het minste ruimte in, en zijn daarom het minst erg om vaak tegen te komen. Logische gevolg is dan dat je dus integers als sleutelvelden gebruikt en niet characters.

Daarnaast is het nogal dom om op een cascade te vertrouwen als het om het ontwerp van je database gaat (nofi :))

Last but not least: Als je dit
In de Rol-form kun je dan gebruik maken van een dropdownlist en voorkom je dat je door een typefout foutieve gegevens op gaat slaan.
Als argument aan gaat dragen, heb je volgens mij weinig begrepen van het principe van een query, die tenslotte de vertaalslag maakt van "gegevens" naar "formulieren" of "rapporten" (om maar even in het Access-jargon te blijven)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Compromise dan maar: een 2 of drie letterige afkorting van de rol-naam? en dat als PK/FK nemen.

Functioneel gezien zal het je namelijk jeuken wat je kiest.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op woensdag 24 april 2002 15:41 schreef Goodielover het volgende:
Compromise dan maar: een 2 of drie letterige afkorting van de rol-naam? en dat als PK/FK nemen.
Waarom niet gewoon een int? Waarom zou je gaan afkorten? Geef me 1 goede reden :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Op woensdag 24 april 2002 15:30 schreef drm het volgende:
remedy70>

Ook ik ben geen superexpert, maar als je zo gaat redeneren over databases dan heeft het inderdaad geen zin meer om te normaliseren.

1 van de redenen dat je normaliseert is dat je gegevens zo efficient mogelijk opgeslagen worden. Als je dan strings of char-velden so you wish als keys gaat gebruiken, vertelt simpele computerarchitectuur je dat dat niet de meest efficiente manier is. Gehele getallen nemen naar verhouding het minste ruimte in, en zijn daarom het minst erg om vaak tegen te komen. Logische gevolg is dan dat je dus integers als sleutelvelden gebruikt en niet characters.
Een van de redenen is inderdaad het vermijden van redundantie. Maar er zijn meerdere belangen en ene JC te A heeft al eens gezegd: 'elk foordeel hep zn nadeel'. Die andere belangen heb ik geprobeerd duidelijk te maken, maar daarover hoor ik je niet.
Daarnaast is het nogal dom om op een cascade te vertrouwen als het om het ontwerp van je database gaat (nofi :))
En waarom is dat dom? Je maakt voor een relationele database gebruik van functionaliteit die typisch is voor deze dbŽs.
Last but not least: Als je dit
[..]

Als argument aan gaat dragen, heb je volgens mij weinig begrepen van het principe van een query, die tenslotte de vertaalslag maakt van "gegevens" naar "formulieren" of "rapporten" (om maar even in het Access-jargon te blijven)
Volgens mij begrijp je het niet helemaal. Die form is gewoon een invoer/muteer/raadpleeg schermpje, waarbij je dus met de drop down list een functie kan kiezen die je in die rij vast wil leggen. Zou best kunnen dat daar een query achterhangt, maar hoeveel nanoseconden zou het duren voordat je pc die 6 rijen gequeried heeft en merk jij dat?

Verwijderd

Ben nog een argument vergeten voor het opnemen van de functienaam ipv ID. Als je namelijk een query gaat draaien en informatie wil hebben over alle films waarin Robert de Niro als ACTEUR gespeeld heeft, voorkom je een join en dus een carthegisch product en zal je query tig maal sneller zijn.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 07:11

Pelle

🚴‍♂️

Op woensdag 24 april 2002 15:41 schreef Goodielover het volgende:
Compromise dan maar: een 2 of drie letterige afkorting van de rol-naam? en dat als PK/FK nemen.

Functioneel gezien zal het je namelijk jeuken wat je kiest.
Hmja, maar de combinatie van 3 letters is iets eerder op dan een int van 4 bytes. En is daarnaast ook niet echt makkelijk auto-increment te maken.

Het leuke van primairy keys is, is dat ze geen enkele andere betekenis hebben dan het record uniek identificeren. Het heeft dan ook niet echt zin om betekenis aan een key te hangen, hij dient slechts om dat record uniek identificeerbaar te maken, en indien opgenomen als FK in een andere tabel, makkelijk met cascades en updates om te gaan.

Tuurlijk, het interesseert helemaal geen hol wat je als PK gebruikt, maar waarom zou je het jezelf moeilijk maken door PK's te gaan verzinnen die je ook automagisch kunt laten genereren, waarbij je zeker weet dat er niks mis kan gaan :?

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 07:11

Pelle

🚴‍♂️

Op woensdag 24 april 2002 15:53 schreef remedy70 het volgende:
Ben nog een argument vergeten voor het opnemen van de functienaam ipv ID. Als je namelijk een query gaat draaien en informatie wil hebben over alle films waarin Robert de Niro als ACTEUR gespeeld heeft, voorkom je een join en dus een carthegisch product en zal je query tig maal sneller zijn.
Hmm, misschien dat het slim is om je boekje over gegevens- en opslagstructuren nog maar eens na te lezen. Voor banken en andere grote instellingen gaat dat misschien wel op (hoewel, een goeie DBA kan een hoop optimaliseren :)), maar voor een simpele database met bijvoorbeeld minder dan 20.000.000 records, ga jij dat dus echt niet merken.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op woensdag 24 april 2002 15:53 schreef Pelle het volgende:

[...]

Tuurlijk, het interesseert helemaal geen hol wat je als PK gebruikt, maar waarom zou je het jezelf moeilijk maken door PK's te gaan verzinnen die je ook automagisch kunt laten genereren, waarbij je zeker weet dat er niks mis kan gaan :?
Nu kan er toch ook niets meer of minder mis gaan dan wanneer je een gegenereerde code gebruikt.
Als je een landentabel hebt, gebruik je toch ook de drieletterige afkorting in je tabel als PK.
Voor alle objecten ben ik het helemaal met je eens, maar in het geval van een code tabel (want dat is dit eigenlijk) mag de PK van mij best wel sementiek bevatten. Lekker makkelijk in je hoofdtabel, dan zie je direct wat de rol is en hoef je geen join te doen of nummertjes te onthouden.
Verschil tussen theorie en praktijk wat mij betreft. Een wat betreft opslagruimte en querytijd is het een non issue

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 24 april 2002 15:07 schreef remedy70 het volgende:
[..]
Als die functienaam verandert, wordt er een cascade update gedaan, dus dat is geen argument.
Gemiddelde film heeft ? zo over de 80 personen toch wel?
gemiddelde functienaam is toch wel over zo'n 8 karakters?

Een int is 4 bytes.. dat is 4 bytes minder dan je gemiddelde functie naam, bij 80 personen scheelt dat dus 320 Bytes na zo'n 20.000 films is het verschil dus zo'n 6400000 bytes, daarnaast is een index op een integer sneller dan op een karakterveld. (Vooral als je uiteindelijk een like wilt gaan gebruiken..) ipv 160.000 like's uit te voeren op de tabel heb je dan maar EEN like nodig. Database wise is het gewoon verstandiger om ook in de functie tabel een id op te nemen.
Waarom ik daar bij personen niet voor kies lijkt me duidelijk:
[..]
is het ook, alleen had ik gehoopt dat jij wat abstracter ernaar zou kijken en had gezien wat ik er precies mee bedoelde.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • utlover
  • Registratie: Januari 2000
  • Laatst online: 31-08 15:08
Betreffende de vraag van het form (is zo te zien nog niet beantwoord):

Kan eenvoudig. Maak twee comboboxen aan, welke na selectie een insert uitvoeren op de betreffende relatietabel. Vanzelfsprekend laat je de recordsource van die combo al filteren op reeds bestaande combinaties. Dan na de update je onderliggende query (= recordsource van het form) requery'en en klaar ben je!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 07:11

Pelle

🚴‍♂️

Op woensdag 24 april 2002 16:03 schreef Goodielover het volgende:
maar in het geval van een code tabel (want dat is dit eigenlijk) mag de PK van mij best wel sementiek bevatten.
Dat gaat alleen werken als je zeker weet dat degene die de gegevens onder z'n neus krijgt, ook weet waar de code een afkorting voor is.
Daarnaast heeft het weinig zin om semantiek aan een key te hangen als je zowiezo toch nog een join moet doen om de gegevens die afhankelijk van die key zijn, te achterhalen.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 24 april 2002 15:53 schreef remedy70 het volgende:
Ben nog een argument vergeten voor het opnemen van de functienaam ipv ID. Als je namelijk een query gaat draaien en informatie wil hebben over alle films waarin Robert de Niro als ACTEUR gespeeld heeft, voorkom je een join en dus een carthegisch product en zal je query tig maal sneller zijn.
Als je je query goed maakt, zal je via de explain zien dat je een select op de tabel maakt waardoor de ID wordt teruggegeven daar zal er precies EEN aan voldoen. Als je die gaat vermenigvuldigen met je koppeltabel kom je bij lange na niet aan de carthegisch product.

Leer hoe een database werkt, of ga geen domme redenen proberen te verzinnen, Doe je dat wel ga je gegarandeerd onderuit, er zijn genoeg mensen hier die redelijk veel ervaring hebben in het ontwerpen van database modellen en er dus wel veel kaas van hebben gegeten.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

remedy70:
Een van de redenen is inderdaad het vermijden van redundantie. Maar er zijn meerdere belangen en ene JC te A heeft al eens gezegd: 'elk foordeel hep zn nadeel'. Die andere belangen heb ik geprobeerd duidelijk te maken, maar daarover hoor ik je niet.
Die "belangen" bestaan dus imo niet. Ga ik zo uitleggen.* drm
En waarom is dat dom? Je maakt voor een relationele database gebruik van functionaliteit die typisch is voor deze dbŽs.
Heb je opzich gelijk in. Maar gek genoeg hoor ik je nu weer niet over performance.
Volgens mij begrijp je het niet helemaal. Die form is gewoon een invoer/muteer/raadpleeg schermpje, waarbij je dus met de drop down list een functie kan kiezen die je in die rij vast wil leggen. Zou best kunnen dat daar een query achterhangt, maar hoeveel nanoseconden zou het duren voordat je pc die 6 rijen gequeried heeft en merk jij dat?
En dat is dus exact mijn punt. Jij zegt namelijk dit:
In de Rol-form kun je dan gebruik maken van een dropdownlist en voorkom je dat je door een typefout foutieve gegevens op gaat slaan.
* drm Er is helemaal niets wat je weerhoudt van een formulier maken op basis van een text-veld, om vervolgens de primary key van die tabel in de Rol-tabel op te slaan in plaats van de inhoud van het textveld. Dat is nou precies waar zo'n query voor een formulier om draait. Daarmee voorkom je net zo goed dat er foutieve gegevens opgeslagen worden.

Oftewel: het argument van het formulier gaat in geen geval op, want je zult hoe dan ook aan de hand van een 1:n relatie een dropdown moeten maken. Dat is sowieso
SELECT name FROM tabel
of name dan de primary key is of niet, dat is pas interessant wanneer er op "opslaan" geklikt wordt, als je begrijpt wat ik bedoel.
remedy70:
Ben nog een argument vergeten voor het opnemen van de functienaam ipv ID. Als je namelijk een query gaat draaien en informatie wil hebben over alle films waarin Robert de Niro als ACTEUR gespeeld heeft, voorkom je een join en dus een carthegisch product en zal je query tig maal sneller zijn.
Ja, zo kan ik er nog wel een paar verzinnen. Als je er op uit bent om joins te voorkomen, ja, dan zou ik het ook zo doen. Maar dan gaat het argument niet meer op zodra je meerdere velden aan je tabel "Functie" toevoegt. Dan moet je alsnog joinen, en dan moet je database gaan joinen op een text-veld. Heb zo'n vermoeden dat dat ook weer behoorlijk wat performance gaat kosten.

Kortom: als je joins gaat voorkomen, in hoeverre is je model dan nog wel schaalbaar?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op woensdag 24 april 2002 16:08 schreef dusty het volgende:
Wat heb jij een mooie signature :Y)
Fan geworden?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 24 april 2002 15:58 schreef Pelle het volgende:

[..]

Hmm, misschien dat het slim is om je boekje over gegevens- en opslagstructuren nog maar eens na te lezen. Voor banken en andere grote instellingen gaat dat misschien wel op (hoewel, een goeie DBA kan een hoop optimaliseren :)), maar voor een simpele database met bijvoorbeeld minder dan 20.000.000 records, ga jij dat dus echt niet merken.
Het is juist andersom, bij kleinere databases zal je het niet snel merken dat het niet gebruiken van een ID de tijd verlengd, juist door een id te gebruiken worden queries onderhoudbaar en nog uit te voeren als er veel tabellen zijn en er opeens gezocht moet worden op een KARAKTER veld.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 24 april 2002 16:13 schreef Goodielover het volgende:
[..]
Wat heb jij een mooie signature :Y)
Fan geworden?
Nee, ik gebruik alleen beledigende uitspraken van andere mensen over andere mensen >:)

Alleen puur toeval dat de beledigende uitspraak door de persoon zelf was gezegd :P

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 07:11

Pelle

🚴‍♂️

Op woensdag 24 april 2002 16:15 schreef dusty het volgende:
Het is juist andersom, bij kleinere databases zal je het niet snel merken dat het niet gebruiken van een ID de tijd verlengd, juist door een id te gebruiken worden queries onderhoudbaar en nog uit te voeren als er veel tabellen zijn en er opeens gezocht moet worden op een KARAKTER veld.
Dat bedoelde ik ook te zeggen :)
Hoe groter je database, hoe eerder je het zult merken dat je gegevensmodel brak is. Ik probeerde even aan te geven dat het feit dat hij straks geen performanceverlies merkt, niet automatisch inhoudt dat z'n gegevensmodel ook goed in elkaar zit. Maar jij kon het dus wat beter uitleggen :+

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

</offtopic>

Hoe ver was zerosignal ondertussen?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op woensdag 24 april 2002 16:28 schreef drm het volgende:
</offtopic>

Hoe ver was zerosignal ondertussen?
Huh, wie ...... Oh, de topic starter.
(sorry wordt een beetje melig, bijna vakantie, nog twee dagen en dan twee weken vrij!!)

Verwijderd

Prima zoŽn discussie, maar we moeten niet vergeten wat gevraagd werd: een simpele oplossing met standaard functies van access die uitgevoerd kan worden door iemand zonder al te veel ervaring in dit gebied (access, net zoals ik dus).

Voorbeelden als 20.000 films (waarbij dan 6mb ruimte bespaard zou kunnen worden) zijn niet echt van toepassing op een kleine hobbydatabase. Hoe jullie commentaar kunnen hebben op formulieren die je niet gezien hebt ontgaat mij ook. Ik zal voor de laatste keer de keuzes proberen te rechtvaardigen. Ik weet dat je in een profesionele omgeving (db2 of zo) heel anders hiermee omgaat. Ik weet ook dat access geen professionele omgeving is. En wat ik al helemaal weet is dat ik geen DBA ben. Ik weet wel alles over ERDŽs en ontwerpen.
Het leuke van primairy keys is, is dat ze geen enkele andere betekenis hebben dan het record uniek identificeren. Het heeft dan ook niet echt zin om betekenis aan een key te hangen, hij dient slechts om dat record uniek identificeerbaar te maken, en indien opgenomen als FK in een andere tabel, makkelijk met cascades en updates om te gaan.
Gedeeltelijk juist, enige doel is uniek identificeren. De tabel functie is eigenlijk alleen maar het ŽdomeinŽ voor het veld functie in Rol. Waarom geen domein maar tabel heb ik uitgelegd. Zoals het er nu voor staat zal het enige attribuut inderdaad functienaam zijn. Waarom het geen zin zou hebben dat een PK een betekenis heeft ontgaat mij geheel. Als ik hier een PK functie ID zou toevoegen, leg ik precies dezelfde informatie vast (niet dezelfde gegevens).
Tuurlijk, het interesseert helemaal geen hol wat je als PK gebruikt, maar waarom zou je het jezelf moeilijk maken door PK's te gaan verzinnen die je ook automagisch kunt laten genereren, waarbij je zeker weet dat er niks mis kan gaan
Tja, en wat gebeurt er als je vergeten bent (zoals jij nu) een unieke index te leggen op functienaam? Juist, dan kan het ook met gegenereerde IDŽs helemaal mis gaan.
Als je je query goed maakt, zal je via de explain zien dat je een select op de tabel maakt waardoor de ID wordt teruggegeven daar zal er precies EEN aan voldoen. Als je die gaat vermenigvuldigen met je koppeltabel kom je bij lange na niet aan de carthegisch product.

Leer hoe een database werkt, of ga geen domme redenen proberen te verzinnen, Doe je dat wel ga je gegarandeerd onderuit, er zijn genoeg mensen hier die redelijk veel ervaring hebben in het ontwerpen van database modellen en er dus wel veel kaas van hebben gegeten.
Ik doel dus op zoŽn query:
Select Film.titel
From Rol, Persoon, Film, Functie
Where Functie.Functienaam = 'acteur'
And Persoon.voornaam = 'robert'
And Persoon.achternaam = 'de niro'

die beperkt wordt door geen id in functie op te nemen tot:
Select Film.titel
From Rol, Persoon, Film
Where Rol.Functienaam = 'acteur'
And Persoon.voornaam = 'robert'
And Persoon.achternaam = 'de niro'

Nogmaals, ik heb er niet veel kaas van gegeten van dat praktische gedoe, maar dit is wat ik ooit in het verre verleden geleerd heb hoe queries werken. Bovendien is ook dit eigenlijk een non-issue dat als tegenargument gebruikt wordt voor andere non-issues :P.
Er is helemaal niets wat je weerhoudt van een formulier maken op basis van een text-veld, om vervolgens de primary key van die tabel in de Rol-tabel op te slaan in plaats van de inhoud van het textveld. Dat is nou precies waar zo'n query voor een formulier om draait. Daarmee voorkom je net zo goed dat er foutieve gegevens opgeslagen worden.
Oftewel: het argument van het formulier gaat in geen geval op, want je zult hoe dan ook aan de hand van een 1:n relatie een dropdown moeten maken. Dat is sowieso
SELECT name FROM tabel
of name dan de primary key is of niet, dat is pas interessant wanneer er op "opslaan" geklikt wordt, als je begrijpt wat ik bedoel
Wat me hiervan weerhoudt is de beperking die de topicstarter aangaf, niet al te moeilijk dus.

En dat is niet sowieso een select from, maar gewoon in de eigenschappen van het veld in het formontwerp aangeven dat de rijbron de tabel functie is. Of hier een query achterhangt die dat regelt vind ik niet zo belangrijk, wat belangrijk is dat dit werkt en simpel is.

Moraal van dit verhaal: Ga niet je kennis showen en met moeilijke contructies schermen als de vraagsteller niet op dat niveau kan meekomen. Geef gewoon een simpele oplossing die werkt.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op woensdag 24 april 2002 16:51 schreef remedy70 het volgende:
Moraal van dit verhaal: Ga niet je kennis showen en met moeilijke contructies schermen als de vraagsteller niet op dat niveau kan meekomen. Geef gewoon een simpele oplossing die werkt.
Ja, ja, nou mag ik weer :P (oh tis nog geen vrijdagmiddag... ;))

Ik ben met je eens dat een simpele oplossing die werkt wel zo fijn is. Aan de andere kant kun je het imho beter iets moeilijker maken, waardoor het "goed" is, in plaats van een oplossing die wel werkt, maar eigenlijk niet helemaal correct is.
Laat ik het anders zeggen, ik wou dat ik een paar jaar geleden dit soort topics had gevolgt, in eerste instantie zouden m'n oren hebben geklapperd, maar naderhand zou ik ze eeuwig dankbaar zijn doordat uiteindelijk door dit soort topics mijn kennis en begrip stijgt.
(alleen nu nog een lesje Nederlands typen...)

Exact expert nodig?


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

't spijt me wel maar daar ga ik "verstandigerwijs" niet verder op in.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Op donderdag 18 april 2002 10:55 schreef Goodielover het volgende:
Jammer Destruction_Dimbo dat je jezelf met deze post nog onder het niveau 0,0 hebt gedefinieerd.
Het betreft dus niet een 1:n relatie, maar een n:m relatie.

Netste oplossing is (zie ook boven):
Film met n:m naar persoon.
bij de verzelfstandige relatie hou je ook de rol bij die de persoon vervult.
Als een persoon zowel acteur als regiseur is, ontstaan er dus twee relaties tussen de persoon en de film met ieder een andere rol.

Suc6
[..]
Ja voutje, maar warom gebruik je die Access forms? Warom geen Delphi ? Werkt imo beter, en zo moeilijk is het niet om gegevens in een grid te pleuren.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Destruction_Dimbo:
Ja voutje, maar warom gebruik je die Access forms? Warom geen Delphi ? Werkt imo beter, en zo moeilijk is het niet om gegevens in een grid te pleuren.
Dat is de discussie niet, lijkt me :D Daar heeft topicstarter ongetwijfeld zo zijn redenen voor ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • iAR
  • Registratie: November 2000
  • Niet online
g-sus... ehm, hallo mag ik me er ook ff mee bemoeien!? ;)

Zoals je hebt kunnen lezen, Destruction_Dimbo, heb ik Access only... dit is niet echt handig voor een oplossing lijkt me: discussies over de naam van een kolom of toch maar wel Delphi... duss... :+

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

* drm is benieuwd hoe ver zerosignal ondertussen is gekomen :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • iAR
  • Registratie: November 2000
  • Niet online
Nou op zich niet zover... ;) 't wordt er niet duidelijker op... :/

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op donderdag 25 april 2002 09:52 schreef zerosignal het volgende:
Nou op zich niet zover... ;) 't wordt er niet duidelijker op... :/
Tot waar was het nog wel duidelijk? (oftewel, bij welke post :P wordt de waas voor je ogen te groot? ;))

Exact expert nodig?


  • iAR
  • Registratie: November 2000
  • Niet online
Nou ik had een mooi rijtje gemaakt en toen moest er normalisser worden (:r). Nou en toen kwam iemand aan met een database aanzetten. And there i lost sight!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op donderdag 25 april 2002 11:38 schreef zerosignal het volgende:
Nou ik had een mooi rijtje gemaakt en toen moest er normalisser worden (:r). Nou en toen kwam iemand aan met een database aanzetten. And there i lost sight!
Dan herhaal ik mijzelf nog even :)
Op woensdag 24 april 2002 13:06 schreef Crazy_D het volgende:
In een 1e oogopslag ziet dat er aardig compleet uit.
Dan wordt het tijd voor Database Normalization And Design Techniques :)
Lees die pagina('s) rustig door, ik vind het er best duidelijk uitgelegt, en geef dan precies aan wat je daar niet in/aan/van (:?) snapt.

Exact expert nodig?


  • iAR
  • Registratie: November 2000
  • Niet online
Ik "snap" het wel, alleen normaliseren lukt me niet. Dat is het probleem. Ik zal mijn database boek thuis eens opgraven. K zit nu op mijn werk dus ik ga nu niet uitgebreid die dingen doen ;)
Dus meld ik me vanavond met de 1NV... :) Hehe... :?

  • iAR
  • Registratie: November 2000
  • Niet online
GROEP1:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
filmID (pk)
titel
land
jaar
genre
studio
plot
info
gezien
mening
cijfer
imdb
own
medium

GROEP2
code:
1
2
3
4
5
filmID
acteur
regisseur
crewfunctie
crewnaam

Nou, tja ik ben hier op gekomen... de keys in groep 2 weet ik zo niet te bepalen... :/
Controle please! ;)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 26 april 2002 09:41 schreef zerosignal het volgende:
studio
Moet men elke keer de volledige naam van de studio intikken met kans op spelfouten voor elke andere film ?

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • iAR
  • Registratie: November 2000
  • Niet online
Op vrijdag 26 april 2002 11:23 schreef dusty het volgende:
Moet men elke keer de volledige naam van de studio intikken met kans op spelfouten voor elke andere film ?
k wou idd land, genre, studio, cijfer & medium (static), acteur, regisseur, crewfunctie en crewnaam uit een pulldownmenu (in form) hebben, waar je ook nog zelf aan toe kan voegen. Dat voorkomt spelfouten! :)
cijfer en medium zouden voorgedefinieerd moeten zijn en dus niet wijzigbaar (das toch pulldown aan tabel koppelen?!)

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Probeer de interface van je datamodel te scheiden. Het is op 1 of andere manier altijd wel mogelijk om een dropdown lijstje te geven met bv bestaande mediums, zonder dat deze in dezelfde tabel als de film staan (en datzelfde geldt natuurlijk voor bv genres, als je die in een aparte tabel stopt).

Voor groep2 moet je eens deze gegevens bekijken en bedenken welke info je dubbel gaat krijgen. En dat gaat nog wel wat worden...

Wat bedoel je precies met crewfunctie en crewnaam?
Functie kan ik me nog bedenken, acteur, regisseur, cameraman, etc. Maar crewnaam?

En wat ik zelf meestal doe waardoor ik het een beetje begrijp: wat is het verschil tussen een acteur en een regiseur (behalve dan inhoudelijk het werk :P)? Ze hebben beiden een naam, het 'hoort' bij dezelfde film, het enigste wat eigenlijk anders is is de functienaam (acteur, of regiseur dus). Vervolgens kan een acteur ook de regiseur zijn, of alleen regiseur bij een andere film. Dus is de functie eigenlijk nog niet intressant (die is film afhankelijk), en dan hou je dus vanzelf alleen een "Naam" over. Om dan per film bij te houden wie wat deed, heb je een tussentabelletje nodig waarin je bijhoudt bij welke film wie wat deed.

Uiteraard krijg je naast naam nog een uniek ID, je moet het beestje tenslotte kunnen herkennen, en als je wilt kun je natuurlijk nog wat meer essentiele dingen bijhouden zoals schoenmaat en geboortedatum... :)

Exact expert nodig?


  • iAR
  • Registratie: November 2000
  • Niet online
filmID
acteur
regisseur
crewfunctie
crewnaam

hmm, ik scheid nu acteur, regisseur en andere crew, maar dat zou ook samen kunnen?

crewfunctie zou camara kunnen zijn en dan is
crewnaam zerosignal zijn. (dus functienaam - persoonnaam).

Maar goed regisseur is eigenlijk ook een functie (acteur ook). En sommige acteurs regisseren ook weer... :z
Dus daar nog suggestie voor?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op vrijdag 26 april 2002 11:49 schreef zerosignal het volgende:
hmm, ik scheid nu acteur, regisseur en andere crew, maar dat zou ook samen kunnen?

crewfunctie zou camara kunnen zijn en dan is
crewnaam zerosignal zijn. (dus functienaam - persoonnaam).

Maar goed regisseur is eigenlijk ook een functie (acteur ook). En sommige acteurs regisseren ook weer... :z
Dus daar nog suggestie voor?
Eigenlijk zeg je het zelf al. Acteur, regiseur, camera-dude, schmink-dames, zijn allemaal functies. Dus het meest logische zou imho om de functies in een aparte tabel te stoppen.
Als koppeltabel om de film aan de persoon en functie te koppelen, is dus filmID, persoonsID, functieID. Dit kan idd inhouden dat je persoonsID 1 2 keer in die tabel krijgt (gekoppeld aan 1 film), maar met verschillende functieID's.

Exact expert nodig?


  • iAR
  • Registratie: November 2000
  • Niet online
Groep1:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
filmID (pk)
titel
land
jaar
genre
studio
plot
info
gezien
mening
cijfer
imdb
own
medium

Groep2:
code:
1
2
3
filmID
crewjob
crewperson

Dan?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op vrijdag 26 april 2002 12:08 schreef zerosignal het volgende:
Groep2:
code:
1
2
3
filmID
crewjob
crewperson

Dan?
Als crewjob en crewperson verwijzen naar de "job" tabel, en "person" tabel, yup :)

Exact expert nodig?


  • iAR
  • Registratie: November 2000
  • Niet online
Krijg je dan deze tabellen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tFilm       tJob    tPersons    tTabel

filmID      jobID   personID    filmID
titel        jobs    persons    jobID
land                         personID
jaar
genre
studio
plot
info
gezien
mening
cijfer
imdb
own
medium

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op vrijdag 26 april 2002 12:48 schreef zerosignal het volgende:
Krijg je dan deze tabellen?
Imho schiet dat lekker op ;) (behalve dan dat tTabel misschien een rare naam is voor een tabel :P)

Je kan overwegen om land, genre, studio, en medium in een aparte tabel op te slaan en een ID daarvan op te slaan bij de film, i.p.v. de tekst/omschrijving (kun je bv in de tStudio tabel later nog het adres toevoegen ;)).

Oh bedenk/bekijk (ik ben geen filmfanaat dus ik heb daar echt geen idee van) of een film in meerdere genres kan vallen (lijkt me wel, aktie-comedy), in dit geval zou ik zelf kiezen voor een tGenre tabel met een ID en een omschrijving (1: aktie, 2: comedy), en een tFilmGenre tussentabel met filmID en genreID.
Kan een film in meerdere landen zijn opgenomen? (of is land bedoelt als land waar de studio oid zit? dan hoort land imho in een tStudio tabel (waar je dan bv Naam en Land van de studio opslaat). Als een film in meerdere landen kan worden opgenomen, en dat wil je ook zo opslaan, ontkom je imho niet aan een tussentabel.
Voor medium geldt misschien hetzelfde (ik zelf hou altijd alleen het "beste" medium bij, als ik een audio cd zowel in mp3 formaat als op een echte (originele) cd heb, hou ik alleen bij dat ik 'm op cd heb, maar ik kan me voorstellen dat je beide mediums (media?) wil bijhouden).

En dat kun je je nog afvragen voor de overige velden in de tFilm tabel. Wil je 1 oordeel of mening, of is het misschien wel leuk om een 2e mening bij een film te zetten? (of een 3e, 4e, etc). Maar daar kan ik niks over zeggen, ikzelf zou alleen "tof", of "k*t" bijhouden... :))

Hope this helps :)

PS begrijp je ook waarom ik het zo zou opzetten?

Exact expert nodig?


  • iAR
  • Registratie: November 2000
  • Niet online
Mjah als je het zo zou doen dan krijg je idd allemaal extra tabellen... :) k zal er over na dneken!

Maar goed tTabel is zeg maar waar alles gekoppeld wordt.

Dan is het nog de kunst om relaties te maken in Access en dan forms te maken? That's it?
En met die relaties is het de sleutels "verbinden" toch?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op vrijdag 26 april 2002 15:30 schreef zerosignal het volgende:
Mjah als je het zo zou doen dan krijg je idd allemaal extra tabellen... :) k zal er over na dneken!
Je krijgt idd een hoop extra tabellen, da's een nadeel. Het weegt echter imho niet op tegen de voordelen die ik vind dat eraan zitten, zoals het makkelijk zoeken.
Maar goed tTabel is zeg maar waar alles gekoppeld wordt.
Noem 'm dan tFilmCrew :)
Dan is het nog de kunst om relaties te maken in Access en dan forms te maken? That's it?
En met die relaties is het de sleutels "verbinden" toch?
Hmm ja dat dacht ik wel (maar ik ben niet zo'n hele grote Access kenner).

Exact expert nodig?

Pagina: 1 2 Laatste