[MS Access] constrainst in db ofniet?

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

  • bille
  • Registratie: Mei 2000
  • Laatst online: 05-08 23:45

bille

Don't call me Buff

Topicstarter
Stel je maakt een applicatie in VB met een Access DB als database. Je bouwt de applicatie vanuit een 'multitier' oogpunt. De database wil je natuurlijk normaliseren, dus pak je een boek erbij van Boyce-Codd en gaat aan de slag. Dan krijg je een mooi ERD. Bij het implementeren van het ERD in Access kan je 2 dingen doen:
1: Constraints opnemen in database en in de code
2: Constraints niet opnemen in database maar alleen in de code

Wat geniet de voorkeur? Hoe goed kan je excepties afvangen in VB die vanuit Access komen op moment dat je iets probeert met SQL wat door de DB niet wordt toegestaan?

Het opnemen van de constraints in de code is vrij eenvoudig. Anderzijds is er een performance winst als je constraints op de db implementeerd... maar zal het meer moeite zijn om de excepties af te vangen?!

Ultra Pilammo 6666Mhz AMD, 4251Mbit/s RAM, Gefors V6666 MegaTurbo, 43" TFS, Ultra 80Gig Firewire netwerkkaart en 5D geluid met 66 speakers in 5 dimensies


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
Waarom zou je constraints die op de data moeten liggen niet in de databank opnemen?
Unique indexes, foreign key constraints, ...
Ik heb het net in een ander topic gezegd: het is de taak van de databank om de integriteit van de gegevens te waarborgen. Constraints in de databank zijn net de kracht van databases.
Het kost niet meer moeite om die excepties af te vangen. Als je die constraints niet in de databank vastlegt, moet je al die constraints zelf programmeren, wat impliceert dat er meer tijd gaat inkruipen en dat je, als je data-rules veranderen, je ook al uw code mag gaan nalopen en aanpassen.

https://fgheysels.github.io/


Verwijderd

Optie 1 geniet mijn voorkeur.
Dat wat je op database nivo kan doen doe je daar en de rest in de code.

/offtopic
Maar ik zou dan SQL Server gaan gebruiken als Back-end voor VB :)

  • bille
  • Registratie: Mei 2000
  • Laatst online: 05-08 23:45

bille

Don't call me Buff

Topicstarter
de SQL server heb je alleen nodig als je over meer dan .. 10.000 records per tabel praat.. en minstens een multiuser omgeving hebt. Maar dat is in dit geval niet ter spraken. Zowiezo, het opnieuw programmeren van de businessrulez van een applicatie is niet zoveel werk als je multitier ontwerpt. Het is dan slechts een deel van de businessrulez die je aanpast in de code. Het is inderdaad wel iets eenvoudiger om databaseconstraints aan te passen, mist er een goede methode binnen VB bestaat om de resultaten van die constraints af te vangen.. en dat is nou net wat ik bedoelde met de vraag....

Ultra Pilammo 6666Mhz AMD, 4251Mbit/s RAM, Gefors V6666 MegaTurbo, 43" TFS, Ultra 80Gig Firewire netwerkkaart en 5D geluid met 66 speakers in 5 dimensies


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
bille schreef op 20 september 2002 @ 02:53:
de SQL server heb je alleen nodig als je over meer dan .. 10.000 records per tabel praat..
en minstens een multiuser omgeving hebt.
Op wat is dat gebaseerd? Je kan evengoed een Sql Server databank maken als je niet zoveel records hebt. Werkt evengoed.
En op andere systemen (Access, MySQL, ...) kun je ook de constraints op databank niveau leggen.
mist er een goede methode binnen VB bestaat om de resultaten van die constraints af te vangen.. en dat is nou net wat ik bedoelde met de vraag....


Error handling. (In delphi, C#, Java, ... kun je die dingen afvangen dmv exceptions).

https://fgheysels.github.io/


  • bille
  • Registratie: Mei 2000
  • Laatst online: 05-08 23:45

bille

Don't call me Buff

Topicstarter
Op wat is dat gebaseerd? Je kan evengoed een Sql Server databank maken als je niet zoveel records hebt. Werkt evengoed.
jah natuurlijk werkt dat even goed.. het is alleen niet nodig.. even goed betekend toch ook gelijk aan.. dus kan je net zo goed een Access db gebruiken.. dan hoef je geen licentiekosten voor een multiuser omgeving te gaan betalen e.d. Want anders zou ik net zo goed Oracle of Sybase kunnen gebruiken ofniet? Het werkt iig wel minstens even goed!
Error handling. (In delphi, C#, Java, ... kun je die dingen afvangen dmv exceptions).
zoals je kon lezen hing het mij niet om Delphi, C# of Java máár om VB -> Visual Basic...

Ultra Pilammo 6666Mhz AMD, 4251Mbit/s RAM, Gefors V6666 MegaTurbo, 43" TFS, Ultra 80Gig Firewire netwerkkaart en 5D geluid met 66 speakers in 5 dimensies


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
bille schreef op 20 september 2002 @ 11:23:

zoals je kon lezen hing het mij niet om Delphi, C# of Java máár om VB -> Visual Basic...



Zoals je kunt lezen zeg ik niet dat het in VB niet mogelijk is. Ik zeg gewoon hoe het gedaan wordt in die andere talen. In VB is het ook mogelijk om die errors op te vangen, ik weet alleen niet precies hoe (dmv on error goto ofzo) ik doe geen VB.

https://fgheysels.github.io/


  • bille
  • Registratie: Mei 2000
  • Laatst online: 05-08 23:45

bille

Don't call me Buff

Topicstarter
Ok nutteloze discussie:
Zoals je kunt lezen zeg ik niet dat het in VB niet mogelijk is.
dat is toch juist wat ik vraag? maar jij zegt er helemaal niks over.. inderdaad dan zeg je óók niet dat het niet kan in VB. En je zegt daarmee ook niet dat de kortste weg van A naar B niet een rechte lijn is :? Ik bedoel: het is een nietszeggend antwoord als je geen uitsluitsel kan geven over de waardheid van de stelling.

Ultra Pilammo 6666Mhz AMD, 4251Mbit/s RAM, Gefors V6666 MegaTurbo, 43" TFS, Ultra 80Gig Firewire netwerkkaart en 5D geluid met 66 speakers in 5 dimensies


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
bille schreef op 20 september 2002 @ 11:30:
Ok nutteloze discussie:

[...]


dat is toch juist wat ik vraag? maar jij zegt er helemaal niks over.. inderdaad dan zeg je óók niet dat het niet kan in VB. En je zegt daarmee ook niet dat de kortste weg van A naar B niet een rechte lijn is :? Ik bedoel: het is een nietszeggend antwoord als je geen uitsluitsel kan geven over de waardheid van de stelling.


Ik zeg net dat het wel mogelijk is, alleen dat ik niet weet HOE precies.

https://fgheysels.github.io/


  • bille
  • Registratie: Mei 2000
  • Laatst online: 05-08 23:45

bille

Don't call me Buff

Topicstarter
jah ok thnx man ;)

Ultra Pilammo 6666Mhz AMD, 4251Mbit/s RAM, Gefors V6666 MegaTurbo, 43" TFS, Ultra 80Gig Firewire netwerkkaart en 5D geluid met 66 speakers in 5 dimensies


  • bille
  • Registratie: Mei 2000
  • Laatst online: 05-08 23:45

bille

Don't call me Buff

Topicstarter
ok heb et es uitgezocht.. probleem blijkt te zijn dan vanuit de DAO totaal géén excepties gegooid worden. Die kunnen dus ook niet worden afgevangen. Database blijft uiteraard wel integer... alleen dat kan je vanuit de code niet weten

DoCmd.RunSQL geeft wel een exceptie.. maar direct in de vorm van een popup met een gare code erin :/ .. al met al is dit dus niet de beste manier om messages naar de GUI te krijg m.b.t. databaseconstraints..

Ultra Pilammo 6666Mhz AMD, 4251Mbit/s RAM, Gefors V6666 MegaTurbo, 43" TFS, Ultra 80Gig Firewire netwerkkaart en 5D geluid met 66 speakers in 5 dimensies


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
bille schreef op 21 september 2002 @ 05:11:
ok heb et es uitgezocht.. probleem blijkt te zijn dan vanuit de DAO totaal géén excepties gegooid worden. Die kunnen dus ook niet worden afgevangen. Database blijft uiteraard wel integer... alleen dat kan je vanuit de code niet weten

DoCmd.RunSQL geeft wel een exceptie.. maar direct in de vorm van een popup met een gare code erin :/ .. al met al is dit dus niet de beste manier om messages naar de GUI te krijg m.b.t. databaseconstraints..


Iedere exceptie is toch op te vangen ? En als je een exceptie opvangt, kun je ervoor zorgen dat die gare errorcode niet getoond wordt, maar dat jouw eigen code getoond wordt.
Waarom gebruik je trouwens DAO en geen ADO?

https://fgheysels.github.io/


  • Sjnirk
  • Registratie: Maart 2001
  • Laatst online: 27-03-2025

Sjnirk

Hie vrieve

Als je wilt weten hoe je die dingen het beste kunt doen, kun je ook es kijken op http://www.mvps.org/access, staat echt veel op

Bikkelen gebeurt pas na 2:00

Pagina: 1