Hoofdstuk 20: De datalaag

20.1          Inleiding datalaag
20.2         Het 3-tier model
20.3          Database
Oefeningen hoofdstuk 20

20.1         Inleiding datalaag

In de cursus C# is de programmeertaal C# aangeleerd aan de hand van consoletoepassingen. In de cursus ASP.NET is hier een grafische gebruikers interface (GUI) aan toegevoegd.

In realiteit is de meeste software veel ingewikkelder dan de programma’s die tot nu geprogrammeerd werden. Een webapplicatie zonder database is bijna ondenkbaar. In de database worden gegevens opgeslagen die later opnieuw opgevraagd kunnen worden.
Top

20.2         Het 3-tier model

Het spreekt voor zich dat wanneer een applicatie groter wordt, de complexiteit toeneemt. Het goed organiseren van de code is van groot belang om:

  • de code overzichtelijk te houden en gemakkelijk terug te vinden;
  • efficiënt samen te werken met andere programmeurs;
  • makkelijker fouten weg te werken;
  • alle functionaliteit eenmalig te coderen;

De voordelen van het lagenmodel zijn dan ook:

  • onderhoudbaarheid;
  • schaalbaarheid;
  • flexibiteit;
  • beschikbaarheid.

Het 3-tier model is een veelgebruikt model om de code gestructureerd en overzichtelijk te organiseren met een duidelijke aanpak. Bij het hanteren van het 3-tier model wordt de applicatie onderverdeeld in 3 aparte lagen, namelijk de presentatielaag, de businesslaag en de datalaag.

Figuur 20.1 database: Het 3-Tier model

Figuur 20.1: Het 3-Tier model

De presentatielaag of GUI is de bovenste laag. Deze laag bestaat uit de pagina’s die de gebruiker kan zien aan de buitenkant van het systeem, namelijk de lay-out van de webpagina’s en de navigatie.

De businesslaag zorgt voor de verbinding met de ander lagen en bevat alle programmeerlogica, objecten en methoden. Tijdens de uitvoering van het programma wordt de invoer van de gebruikers opgeslagen in de objecten en worden de businessregels toegepast.

De datalaag of persistence manager verbindt de toepassing met de databank. Hierin staat de code die gegevens ophaalt uit de database en die bewerkingen uitvoert op de database. Enkel de datalaag bevat de SQL-code. SQL (Structured Query Language) is een opdrachttaal voor het invoeren, wijzigen, verwijderen, raadplegen en beveiligen van gegevens in een relationele databank.
Top

20.3         Database

Een database is opgebouwd uit gegevens die gegroepeerd staan in één of meerdere tabellen. Een rij of record bevat alle gegevens van een bepaalde instantie. Een kolom of veld is het attribuut dat bijgehouden wordt van de instantie.

De cursus op deze website hanteert het database management systeem “SQL server” omdat de database gemakkelijk beheerd kan worden vanuit Visual Studio en zeer compatibel is met ASP.NET-webapplicaties.

Microsoft Access is een bestandsgebaseerde database en bijgevolg minder geschikt is voor webapplicaties. Deze databases kunnen namelijk weinig gelijktijdige bezoekers aan.

Een webapplicatie gebruikt meestal slechts één database. Toch is het mogelijk dat bij grotere projecten meerdere databases aan een project verbonden zijn. Hieronder staan de verschillende stappen beschreven om een database aan te maken in Visual Studio.

Maak in Visual Studio eerst een nieuwe website “Hoofdstuk20” aan. Voeg via het menu Add, Add New Item een SQL Server Database toe met de naam “CSharp.mdf”.

Figuur 20.2 database: Aanmaken SQL Server Database

Figuur 20.2: Aanmaken SQL Server Database

Antwoord “Ja” op de vraag om de nieuwe database in de map “App_Data te plaatsen.

Figuur 20.3 database: Nieuwe database in de map App_Data plaatsena

Figuur 20.3: Nieuwe database in de map App_Data plaatsen

Door in de map App_Data dubbel te klikken op de het bestand “CSharp.mdf” opent het venster Server Explorer met de nieuw database. Dubbelklik op de database om de objecten in de database te zien.

Figuur 20.4 database: Server Explorer

Figuur 20.4: Server Explorer

In de properties van de database is bijvoorbeeld de connection string terug te vinden. Een connection string geeft aan waar de database terug te vinden is. Deze tekstregel is nodig in de .NET-programma’s om een verbinding te kunnen openen. De connection string van de aangemaakte database ziet er als volgt uit:

Data Source=…\Hoofdstuk20\App_Data\CSharp.mdf;Integrated Security=True

De database is aangemaakt op de standaardlocatie, namelijk de map App_Data. Hierin staan twee bestanden: het databasebestand met extensie .mdf en het logbestand met .ldf waarin alle bewerkingen opgeslagen worden.

Figuur 20.5 database: Map App_Data

Figuur 20.5: Map App_Data

De zonet aangemaakte database is opgenomen in de webapplicatie en kan alleen binnen de website gebruikt worden.

Om data te bewaren in een database zijn tabellen nodig. Voor iedere entiteit wordt in de database een tabel aangemaakt. Rechtsklik in de Server Explorer op de map Tables en kies Add New Table.

Figuur 20.6 database: Nieuwe tabel toevoegen

Figuur 20.6: Nieuwe tabel toevoegen

Vervolgens verschijnt het onderstaande scherm waarop de velden (kolommen) van de tabel opgegeven kunnen worden. Een veld bestaat uit een naam en een datatype. De SQL-datatypen komen niet overeen met de .NET-datatypen.

Figuur 20.7 database: Velden aanmaken

Figuur 20.7: Velden aanmaken

Onderstaande tabel geeft de verschillende typen van data weer.

Figuur 20.8 database: Datatypen

Figuur 20.8: Datatypen

Maak een tabel voor het opslaan van de gegevens van de leden van de website https://c-sharp.be en verander de naam van de tabel in “Leden”.

Figuur 20.9 database: Naam van de tabel wijzigen

Figuur 20.9: Naam van de tabel wijzigen

Voor de kolommen met tekst wordt het datatype nvarchar gebruikt. De n staat voor Unicode waardoor het mogelijk is om vreemde tekens op te slaan tussen de gewone tekens. De var staat voor variabel. Dit komt er op neer dat de niet gebruikte posities niet bewaard worden in tegenstelling tot de datatypen char of nchar.

Het ontbreken van een vinkje bij “Allow Nulls” betekent dat deze kolom verplicht een waarde moet krijgen.

Een defaultwaarde kan opgegeven worden in het venster Column Properties bij de property Default Value or Binding.

Door rechts te klikken in een veld en de optie Set Primary Key te selecteren word dit veld de primaire sleutel. Verander onder Identity Specifications de property (Is Identity) in True om dit veld automatisch op te hogen.

Figuur 20.10 database: SQL Server-tabel aanmaken

Figuur 20.10: SQL Server-tabel aanmaken

Update de tabel.

Figuur 20.11 database: Update database

Figuur 20.11: Update database

Refresh ook de database waardoor de tabel Leden in de Server Explorer verschijnt onder het menu Tables.

Rechtsklik vervolgens op de tabel klanten in de Server Explorer en kies de optie Show Table Data om gegevens in te voeren in de database.

Figuur 20.12 database: Show Table Data

Figuur 20.12: Show Table Data

Voeg leden toe aan de tabel Leden.

Figuur 20.13 database: Tabel Leden

Figuur 20.13: Tabel Leden

Maak vervolgens de tabellen Cursus en Inschrijving aan en voeg gegevens toe.

Figuur 20.14 database: Tabel Cursus

Figuur 20.14: Tabel Cursus

Figuur 20.15 database: Tabel Inschrijving

Figuur 20.15: Tabel Inschrijving

In een relationele databank hebben de tabellen onderling relaties met elkaar. De tabel Inschrijving heeft een relatie met de tabel Leden en de tabel Cursus. De tabel Inschrijving heeft een veld LedenID en CursusID dat respectievelijk verwijst naar het ID uit de tabel Leden en het ID uit de tabel Cursus. LedenID en CursusID uit de tabel Inschrijving zijn foreign keys, terwijl ID uit de tabel Leden en ID uit de tabel Cursus primary keys zijn.

Een relatie leggen tussen tabellen gebeurt als volgt:

  • Rechtsklik op foreign key en kies Add New Foreign Key.
Figuur 20.16 database: Foreign Key toevoegen

Figuur 20.16: Foreign Key toevoegen

  • Pas vervolgend de naam van de Foreign Key aan en voeg de juiste tabellen en velden toe in de code.
Figuur 20.17 database: Relaties leggen tussen tabellen

Figuur 20.17: Relaties leggen tussen tabellen

Het belangrijkste voordeel is nu dat er geen inschrijving aangemaakt kan worden met een LedenID of CursusID dat niet bestaat in respectievelijk de tabel Leden en de tabel Cursus. Op deze manier is de integriteit van de data beschermd.
Top

Oefeningen

Oefening 20-1     Maak een nieuwe SQL Server Database aan. Ontwerp een tabel Categorieën met de volgende velden:

  • ID
  • Categorienaam
  • Beschrijving

Ontwerp ook een tabel Leverancier waarin de volgende velden opgenomen worden:

  • ID
  • Leveranciersnaam
  • Adres
  • Postcode
  • Gemeente
  • Oprichtingsdatum

Ontwerp vervolgens een tabel Producten met volgende velden:

  • ID
  • Productnaam
  • Categorienummer
  • Leveranciernummer
  • PrijsPerEenheid
  • Voorraad
  • UitAssortiment

Geef alle velden gepaste eigenschappen.

Leg een relatie tussen de tabellen Categorieën en Producten en tussen de tabellen Leverancier en Producten.
Top

Vorige          Volgende