cameodski schreef op 25 september 2002 @ 18:04:
jgkersemakers, de projecten waar jij over praat, zijn die volledig object georienteerd opgezet?
En de db-structuur is dan niet zo moeilijk te raden, omdat de kolomnamen rechtstreeks af te leiden zijn uit de classes.
Voor een niet of een beetje object georienteerde opzet heb je helemaal gelijk, maar als je echt helemaal object georienteerd bezig ben dan is het toch echt handiger.
Ik heb jarenlang netjes alle kolomnamen genoemd, maar ben daar om deze reden toch veel genuanceerder over gaan nadenken.
Overigens ben ik nog steeds vooral database man, maar ik heb ook wel het nodige van object orientatie meegekregen en ik heb het gevoel dat dat nog wel eens een beetje ontbreekt bij db-goeroes, dus vandaar dat ik zogenaamd zo'n enorme (

)voorstander van select * ben.
Cameodski, die zijn inderdaad niet 100% volledig object georienteerd opgezet. Wij gebruiken Delphi Client/Server voor de Client zijde. Delphi biedt weliswaar een aantal objecten aan die het leven van een ontwikkelaar stukken eenvoudiger maken, maar om dan van volledige object orientatie te praten, kan ik niet zeggen.
Ik kan je zeggen, dat ik het gevoel heb, dat je inderdaad weet waarover je het hebt en dat het qua SQL kennis wel goed bij jou zit.
Ik geef daarom ook geen kritiek op jou berichtjes, maar wil alleen mensen die nog niet zoveel ervaring hebben, waarschuwen voor het misbruiken van select *.
Ik ben van mening dat met betrekking tot RDBMS de wereld van methoden en technieken die ze aanleveren grote tekortkomingen hebben. Ik heb al heel wat methoden en technieken bestudeert de afgelopen tijd en de meeste methoden beweren weliswaar dat zij DE oplossing bieden tot een goede en gestructureerde projectaanpak, maar het is altijd hetzelfde verhaal. Het verhaal wordt zeer summier en vaag, zodra er een DBMS in het stuk voorkomt. Daar bieden de methoden en technieken (die ik reeds bestudeerd heb) jammer genoeg geen enkele goede oplossing voor en komt het er in de praktijk op neer dat de ontwikkelaar zelf maar kijken moet, hoe hij het aanpakt.
Mijn huidige functie qua databases is o.a. het opzetten van tabellen, schrijven van procs, triggers, leggen van indexen, tunen van SQL statements, zorgen dat het ACID principe gewaarborgd blijft e.t.c. Aan de applicatiezijde ben ik degene die het Technisch Design dient te doen en voor de complexe problemen oplossingen dient te ontwikkelen. Met het huidige systeem zijn we reeds vele jaren bezig (Is een behoorlijk omvangrijk multi-user project) en door de jaren heen heeft ons team behoorlijk wat ervaring en kennis opgedaan.
Ik kan je vertellen dat ook wij (ons ontwikkelteam praat ik dan over) in de beginfase nogal eens misbruik (of gebruik zo je wenst) maakten van select *. In onze situatie is het echter zo, dat er ook ontwikkelaars zijn die nauwelijks ervaring hebben met SQL en de * telkens blijven gebruiken, terwijl ze bijvoorbeeld maar enkele velden nodig hebben van een tabel. Vooral op een WAN in een multi-user omgeving heeft dit uiteraard zeer negatieve gevolgen voor de responstijd.
Een van onze DB-goeroes (Die persoon heeft echt veel verstand van zaken en beheerst de theoretische zijde tot in de puntjes, zelfs Sybase wil hem graag overnemen van ons bedrijf om maar eens iets aan te noemen) heeft ons uitgelegd, waarom hij tegen was op het gebruik van select * (zoals ik al aangaf in een eerdere respons o.a. met het voorbeeld van insert into ... select * from...).
Ik geef je gelijk op het punt dat select * niet hoeft te betekenen, dat slecht gecodeerd wordt door de ontwikkelaar. Vooral bij databases waarbij de tabelstructuren reeds gedefinieerd zijn en nauwelijks aan veranderingen onderhevig zijn, hoeft dat geen enkel probleem te vormen. Het kiezen van het al dan niet gebruik van select *, zie ik in een dergelijk geval niet meer als een keuze, die de ontwikkelaar zelf dient te nemen.
Indien een deelsysteem daadwerkelijk alle attributen nodig heeft, dan hoeft het gebruik van select * geen enkel probleem te zijn.
Echter, ons systeem is in constante doorontwikkeling en tabellen zijn nogal aan verandering onderhevig, omdat onze klant bij reeds bestaande onderdelen dikwijls functionaliteit totaal laat aanpassen, met alle gevolgen vandien. Wij hebben al vaker meegemaakt dat wij Reverse Engineering hebben moeten verrichten en vooral bij weghalen/wijzigen attributen (zelfs datatype attributen moeten we in sommige gevallen aanpassen) is een Impact Analyse stukken eenvoudiger te verrichten, indien ontwikkelaars gebruik maken van select <veldnamen>. Begin maar eens te zoeken op een attribuutnaam, indien je gebruik maakt van select *.