Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Les12-01-Data-Sources
1. Data Sources
Data Sources = databronnen = gegevensbronnen
Een gegevensbron is simpelweg een bron van gedigitaliseerde gegevens. Het kan een bestand, een bepaalde
database, of zelfs een live data-feed. De gegevens kunnen op dezelfde computer als het programma staan of op
een andere computer ergens op een netwerk.
Soorten databronnen:
Database Servers
Data bestanden
Andere…
2. Data Sources
Doel
Het doel van een gegevensbron is het verzamelen van alle van de technische informatie die nodig is om de
toegang tot de gegevens - de bestuurder naam, netwerkadres, netwerksoftware, en ga zo maar door - in een
enkele plaats en het te verbergen voor de gebruiker.
De gebruiker moet in staat zijn om te kijken naar bijvoorbeeld een lijst die Loonlijst, Inventaris, en
Personeelsgegevens bevat, zonder te weten waar de loonlijst gegevens zich bevinden of hoe de applicatie eraan
komt.
3. Data Sources
Database
Database-opslag van gegevens:
•Gestructureerd
•Uniek
Doel:
•Spaarzaam omgaan met opslagruimte
•Vermijden van redundantie (meervoudige vastlegging van dezelfde data)
•Vermijden van vastleggen van afgeleide gegevens (bijv. totalen, gemiddelden, leeftijd, …)
6. Data Sources
Unieke regels in een database-tabel: word je toch ‘n nummertje…
Data dient uniek opgeslagen te worden in een database.
Hier gebruikt men een ID voor.
Dit is trefzekerder dan bijvoorbeeld alleen een naam:
binnen een groot bedrijf zouden er meerdere personen met de naam “Henk de Vries” kunnen zijn.
Types ID
•Auto-numbering
• een geheel getal dat automatisch opgehoogd wordt bij toevoegen van een nieuwe regel in een database-tabel
•GUID (Globally Unique IDentifier)
• Gegenereerd o.b.v. tijdstip, MAC-adres en evt. Andere PC-specifieke eigenschappen
• Voorbeeld: 33b9d8e2-c9e5-47d1-8d20-db1a641c8fbf
•Custom
• Eigen format, bijvoorbeeld: YYYY-MM-DD,hh:mm:ss.fffffff als tekst => “2013-02-12,14:51:28.2395629”
Dit ID wordt een kolom/veld in de tabel en heet vanwege zijn uniek bepalend karakter:
Primary Key, kortweg PK
7. Data Sources
Voorbeeldje: personeelsbestand
PK
PK
?
?
Dit is de koppeling met een andere tabel: de verwijzing vanuit tabel Werknemer naar tabel Adres.
Het veld Adres_ID in de tabel Werknemer verwijst naar de unieke PK van de tabel Adres.
Het veld Adres_ID in de tabel Werknemer is zodoende de Foreign Key, kortweg FK.
? = FK
10. Data Sources
Tabel-relaties
Tabel-relaties worden gemaakt via PK-FK koppelingen.
3 vormen van tabel-relaties:
•één-op-veel (+ veel-op-één) 1:N
•veel-op-veel M:N
•één-op-één 1:1
op op
op
1:N M:N 1:1
11. Data Sources
Tabel-relaties
één-op-veel, 1:N
één student zit in
1 n één groep, in één
Student zit in Klas
groep mogen
meerdere
studenten zitten
veel-op-één
1 n er mogen
Klas bevat Student meerdere
studenten in
één klas zitten
Student
n leent
1 Boek
exemplaar
12. Data Sources
Tabel-relaties
veel-op-veel, M:N
elke student
krijgt les van
n volgt n meerdere
Student docent docenten; elke
les van
docent geeft les
aan meerdere
studenten.
een fitness-
n n apparaat wordt
Fitnesser gebruikt apparaat gebruikt door
meerdere
sporters; een
sporter gebruikt
meerdere
apparaten.
14. Data Sources
Tabellen en bijbehorende relaties: diagram / schema
Standaard voorbeeld database van Microsoft: Northwind (in SQL Server)
15. Data Sources
Northwind database
SQL Server is your friend… or maybe NOT!
SQL Server is erg veelomvattend en strict als het op installatie aankomt.
Vanwege installatie- en migratie-perikelen teruggrijpen op de kleinere editie:
SQL Server Compact Edition (CE).
CE valt tussen een echte SQL Server database en een Access database in qua functionaliteit.
Een CE database wordt benaderd als een bestand.
Daarnaast heeft het de restrictie dat het puur op de lokale PC benaderd kan worden.
Voor leereinddoelen voldoet CE verder prima!
Een database (SQL Server of CE) kan met de volgende tools bekeken worden:
•SQL Server Management Studio (SSMS)
•Visual Studio
17. Data Sources
Northwind.sdf (CE database)
Een database (SQL Server of CE) kan met de volgende tools bekeken worden:
1.SQL Server Management Studio (SSMS)
2.Visual Studio
Ad 1. SSMS
22. Data Sources
Database datatypes
Kolommen/velden binnen een tabel van een database zijn van een bepaald datatype.
Dit is vergelijkbaar met de datatypes van C#.
Soort Datatype
Gehele getallen bigint, numeric, integer, smallint, tinyint
Boolean bit
Komma-getallen real, float, money
Datum-tijd datetime
Tekst nchar, nvarchar, ntext
Binaire data binary, varbinary, image
ID uniqueidentifier (GUID), IDENTITY (auto-number)
23. Data Sources
Data-manipulatie: CRUD
Create
Read
Update
Delete
Read is voor alle gevallen belangrijk, dus daar gaan we ook mee beginnen:
het selecteren/opvragen van gegevens uit bestaande data.
Het gaat hier om SELECT-query’s.
Query’s worden geformuleerd a.h.v. SQL: Structured Query Language.
25. Data Sources
Query-scherm openen in: Visual Studio
Query-scherm
NB: de Visual Studio biedt een intuitievere
manier van werken. Mensen die Access kennen,
zullen e.e.a. herkennen…
26. Data Sources
SELECT-Query’s
De meest elementaire SELECT-query is om van 1 tabel alles op te vragen.
Bijvoorbeeld alles van de tabel Categories.
Dit doe je als volgt:
SELECT *
FROM Categories
Kies je voorkeursomgeving (SSMS of Visual Studio) en vul bovenstaande select-query in in het query-scherm.
Voer vervolgens de query uit met Execute.
29. Data Sources
SELECT-Query’s: specifieke velden/kolommen
SELECT [Last Name], [First Name], Title
FROM Employees
NB: Namen met een spatie erin moeten voorzien worden van rechte haken ( [ ] ) anders snapt SQL het niet!
Resultaat:
Last Name First Name Title
Davolio Nancy Sales Representative
Fuller Andrew Vice President, Sales
Leverling Janet Sales Representative
Peacock Margaret Sales Representative
Buchanan Steven Sales Manager
Suyama Michael Sales Representative
King Robert Sales Representative
Callahan Laura Inside Sales Coordinator
Dodsworth Anne Sales Representative
Hellstern Albert Business Manager
Smith Tim Mail Clerk
Patterson Caroline Receptionist
Brid Justin Marketing Director
Martin Xavier Marketing Associate
Pereira Laurent Advertising Specialist
30. Data Sources
SELECT-Query’s: sorteren
SELECT [Product Name], [Unit Price]
FROM Products
ORDER BY [Unit Price] DESC
Hierbij geldt:
DESC: in aflopende volgorde.
ASC: in oplopende volgorde (default: als je niks opgeeft, veronderstelt SQL dat het ASC is)
Resultaat:
Product Name Unit Price
Côte de Blaye 263,5
Thüringer Rostbratwurst 123,79
Mishi Kobe Niku 97
Sir Rodney's Marmalade 81
Carnarvon Tigers 62,5
Raclette Courdavault 55
Manjimup Dried Apples 53
31. Data Sources
SELECT-Query’s: sorteren (meervoudig)
SELECT Title, [Last Name], [Home Phone]
FROM Employees
ORDER BY Title DESC, [Last Name] ASC
Resultaat:
Title Last Name Home Phone
Vice President, Sales Fuller (206) 555-9482
Sales Representative Davolio (206) 555-9857
Sales Representative Dodsworth (71) 555-4444
Sales Representative King (71) 555-5598
Sales Representative Leverling (206) 555-3412
Sales Representative Peacock (206) 555-8122
Sales Representative Suyama (71) 555-7773
Sales Manager Buchanan (71) 555-4848
Receptionist Patterson (206) 555-3487
Marketing Director Brid 88 83 83 16
Marketing Associate Martin 88 62 43 53
Mail Clerk Smith (206) 555-3857
32. Data Sources
SELECT-Query’s: criteria
SELECT [First Name], [Last Name], City
FROM Employees
WHERE City = 'London‘
Resultaat:
First Name Last Name City
Steven Buchanan London
Michael Suyama London
Robert King London
Anne Dodsworth London
33. Data Sources
SELECT-Query’s: criteria (meervoudig)
SELECT [First Name], [Last Name], City, Title
FROM Employees
WHERE (City = 'London') AND (Title = 'Sales Representative')
Resultaat:
First Name Last Name City Title
Michael Suyama London Sales Representative
Robert King London Sales Representative
Anne Dodsworth London Sales Representative
34. Data Sources
SELECT-Query’s: DISTINCT (laat geen dubbele voorkomens zien)
SELECT City SELECT DISTINCT City
FROM Employees FROM Employees
Resultaat: Resultaat:
City City
Seattle Auburn
Tacoma Bellevue
Haguenau
Kirkland Kent
Redmond Kirkland
London London
London Redmond
Schiltigheim
London
Seattle
Seattle Strasbourg
London Tacoma
Bellevue
Kent
Auburn
Haguenau
Schiltigheim
Strasbourg
35. Data Sources
SELECT-Query’s: LIKE
SELECT [Last Name], Title SELECT [Product Name] SELECT [Product Name]
FROM Employees FROM Products FROM Products
WHERE (Title LIKE 'Sales%') WHERE ([Product Name] LIKE '%bröd') WHERE ([Product Name] LIKE '%hot%')
Resultaat: Resultaat: Resultaat:
Last Name Title Product Name Product Name
Gustaf's Knäckebröd Louisiana Fiery Hot Pepper Sauce
Davolio Sales Representative
Tunnbröd Louisiana Hot Spiced Okra
Leverling Sales Representative
Peacock Sales Representative
Buchanan Sales Manager
Suyama Sales Representative
King Sales Representative
Dodsworth Sales Representative
36. Data Sources
SELECT-Query’s: BETWEEN
SELECT [Product Name], [Unit Price] SELECT [Last Name], [Birth Date]
FROM Products FROM Employees
WHERE ([Unit Price] BETWEEN 1 AND 8) WHERE ([Birth Date] BETWEEN '1-1-1965' AND '1-1-1975')
Resultaat: Resultaat:
Product Name Unit Price Last Name Birth Date
Dodsworth 1966-01-27 00:00:00.000
Konbu 6
Smith 1973-06-06 00:00:00.000
Guaraná Fantástica 4,5 Patterson 1972-09-11 00:00:00.000
Geitost 2,5 Pereira 1965-12-09 00:00:00.000
Filo Mix 7
Tourtière 7,45
Rhönbräu Klosterbier 7,75
37. Data Sources
SELECT-Query’s: IS NULL / IS NOT NULL (d.w.z. niet/wel ingevuld)
SELECT [Company Name] SELECT [Company Name]
FROM [Suppliers] FROM [Suppliers]
WHERE Fax IS NULL WHERE Fax IS NOT NULL
Resultaat: Resultaat:
Company Name Fax Company Name Fax
Grandma Kelly's Homestead (313) 555-3349
Exotic Liquids NULL
Pavlova, Ltd. (03) 444-6588
New Orleans Cajun Delights NULL PB Knäckebröd AB 031-987 65 91
Tokyo Traders NULL Nord-Ost-Fisch Handelsgesellschaft mbH (04721) 8714
Cooperativa de Quesos 'Las Cabras' NULL Formaggi Fortini s.r.l. (0544) 60603
Mayumi's NULL Aux joyeux ecclésiastiques (1) 03.83.00.62
New England Seafood Cannery (617) 555-3389
Specialty Biscuits, Ltd. NULL
Lyngbysild 43844115
Refrescos Americanas LTDA NULL Zaanse Snoepfabriek (12345) 1210
Heli Süßwaren GmbH & Co. KG NULL G'day, Mate (02) 555-4873
Plusspar Lebensmittelgroßmärkte AG NULL Pasta Buttini s.r.l. (089) 6547667
Norske Meierier NULL Gai pâturage 38.76.98.58
Forêts d'érables (514) 555-2921
Bigfoot Breweries NULL
Svensk Sjöföda AB NULL
Leka Trading NULL
Karkki Oy NULL
Ma Maison NULL
Escargots Nouveaux NULL
38. Data Sources
SELECT-Query’s: IN
SELECT [Last Name], City SELECT [Product Name], [Reorder Level]
FROM Employees FROM Products
WHERE City IN ('Seattle', 'London', 'Tacoma') WHERE [Reorder Level] IN (5,10,25,30)
Resultaat: Resultaat:
Last Name City Product Name Reorder Level
Chai 10
Davolio Seattle
Chang 25
Fuller Tacoma Aniseed Syrup 25
Buchanan London Grandma's Boysenberry Spread 25
Suyama London Uncle Bob's Organic Dried Pears 10
King London Queso Cabrales 30
Konbu 5
Callahan Seattle
Genen Shouyu 5
Dodsworth London Pavlova 10
Teatime Chocolate Biscuits 5
Sir Rodney's Scones 5
Gustaf's Knäckebröd 25
Tunnbröd 25
NuNuCa Nuß-Nougat-Creme 30
Schoggi Schokolade 30
Mascarpone Fabioli 25
Gravad lax 25
Chartreuse verte 5
Boston Crab Meat 30
Jack's New England Clam Chowder 10
39. Data Sources
SELECT-Query’s: Subquery’s
Zoek alle producten uit de categorie 'Seafood‘: Zoek alle bedrijven die een order vóór 1992 geplaatst hebben:
SELECT [Product Name] SELECT [Company Name]
FROM [Products] FROM [Customers]
WHERE [Category ID] IN WHERE [Customer ID] IN
(
(
SELECT [Customer ID]
SELECT [Category ID] FROM [Orders]
FROM [Categories] WHERE [Order Date] < '1-1-1992'
WHERE [Category Name] = 'Seafood'
) )
Resultaat: Resultaat:
Company Name
Product Name
Alfreds Futterkiste
Ikura Antonio Moreno Taquería
Konbu Berglunds snabbköp
Carnarvon Tigers Blauer See Delikatessen
Nord-Ost Matjeshering Blondel père et fils
Bólido Comidas preparadas
Inlagd Sill
Bottom-Dollar Markets
Gravad lax B's Beverages
Boston Crab Meat Centro comercial Moctezuma
Jack's New England Clam Chowder Chop-suey Chinese
Røgede sild Drachenblut Delikatessen
Du monde entier
Spegesild Eastern Connection