Bon, ik ken genoeg van

Bon, ik ken genoeg van C# om aan een applicatie te beginnen.

Zoals ik vroeger altijd aan hetzelfde spelletje begon, ga ik nu hetzelfde doen als wat ik in Access afgemaakt heb en in Delphi aan begonnen ben: een applicatie om mijn boeken te beheren. In ColdFusion had ik het al ooit eens on-line gezet, maar nu is het dus tijd om eens een echte serieuze applicatie te maken. In .NET. Met C#. Jawel!

De database is er al jaren, eigenlijk al van toen ik nog voornamelijk in DOS werkte en alles in dBASE II+ stak. Later omgezet naar dBASE IV, nog later eventjes naar Symantex Q&A (“show me the 10 most expensive books I bought this year”), en dan in een opeenvolging van Access-versies. Nu ziet het er zo uit:

Het is niet direkt een model van de beste databasestructuur die er bestaat, maar het doet zijn werk. In het kort:

De centrale tabel is tblBooks. Daarin zitten een aantal eigenschapen van de boeken zelf (titel, aantal pagina’s, pubilcatiejaar, prijs, …), wat FKs naar andere tabellen: type cover (paperback, hardcover, …), genre (geschiedenis, science fiction, …), uitgever, eigenaar (mezelf, Sandra, …) etc.

Boeken kunnen één of meer auteurs (tblAuthors) hebben. Die auteurs kunnen een “functie” hebben (auteur, vertaler, illustrator, …), en voor elke boek kan één of meer auteurs “primair” zijn (dus bvb. Avontuur in het Verleden kan als auteurs Poul Anderson (primair, auteur) en P. Groen (niet-primair, vertaler) hebben.

Boeken kunnen ook onderdelen (tblParts) hebben, telkens met één of meer auteurs: een anthologie als The Chronicles of the Holy Grail heeft dan als primaire auteur Mike Ashley (editor), en bevat 23 onderdelen, beginnend met The Holy Grail (Mike Ashley), The MAgic Bowl (Peter Tremayne), etc.

In de omgekeerde richting zijn boeken soms ook zelf onderdelen van series (tblSeries): zo is The Doll’s House van Neil Gaiman deel 2 van de Sandman-serie.

Laatste element is dat er op elk niveau (series, boeken, onderdelen) nog reviews kunnen toegevoegd worden. Dit zitten nu voor het gemak in drie afzonderlijke structuren.

Bij elke versie steek ik er wel iets nieuws bij. Ik denk dat ik deze keer die reviews ga rationaliseren. Het zal dan niet meer in Access proper te tekenen zijn, maar ja, niets aan te doen. Iets als tblReviews.item_id en tblReviews.itemType. En er zou ook iets als “uitgeleend aan” moeten bij komen. En iets van “locatie”. En eigenlijk, als ik toch bezig ben, ik kan er zo goed ook direkt mijn CD’s bijsteken en DVD’s.

Enfin, eerst de bestaande Access-dingen omzetten naar C#, dat zal al moeilijk genoeg zijn: