18/7/2013

Database testdata maken met ooo/libre-office

Filed under: — pinguim @ 12:29 pm

Dit voorbeeld gaat uit van een databank met produkten, met de volgende tabellen:

  • prd : produkt
  • cat : categorie
  • prdcat : produkt-categorie koppeling

We gebruiken een rekenblad om ze aan te maken, en importeren ze daarna in mysql, via de web-interface phpMyAdmin (moeten beide al geïnstalleerd zijn dus).

Start een nieuw, leeg rekenblad en

  • Maak 3 tab-bladen: prd, cat, prdcat.
  • Zet in prd bovenaan de titels: id, prd_name, prd_stockalarm, prd_stock, prd_lastprice, cre_date, cre_user, upd_date, upd_user
  • Vul in de eerste rij de waarden in: 1, Product1, 10, 0,0, 18/7/2013, (leeg), sys, (leeg).

Product

  • Het veld id is de key in de database, wordt automatisch toegekend, en verhoogt steeds met 1. Vul er een 100-tal in door de cel met de 1 te selecteren, en het hoekpunt rechts-beneden vast te nemen en recht naar beneden te slepen: de cellen eronder worden gevuld met opeenvolgende waarden (2, 3, 4, 5, …).
  • Het veld prd_stockalarm zetten we voor heel de kolom op 10; selecteer de 10, kopieer. Selecteer een heel bereik naar beneden en plak.

Random Stock

  • Voeg achteraan een kolomtitel toe “random stock”.
  • Tik in de eerste rij van random stock “=ROUND(RAND()*10;2)”. Kopieer naar beneden over 100 lijnen; er komen allemaal verschillende waarden in te staan.
  • Selecteer uit de kolom de random waarden, kies Edit, Copy.
  • Ga op de eerste cel staan onder prd_stock. Rechtklik, Paste Special… en kies voor waarden invullen, maar formules af. Hiermee plak je de getallen van die kolom met random waarden.

Euro 0,00

  • Maak een kolom “random prijs”, zet in de eerste cel “=ROUND(RAND()*10;2)”. Kopieer 100 naar beneden. Hiermee hebben we een prijs in Euro tot 2 cijfers na de komma nauwkeurig. Kopiëer en plak met “paste special”, enkel de waarden.

20 Cats

  • In tabblad Cat vul je de titels in: id, cat_name, cre_date, cre_user, upd_date, upd_user, en vul de id’s: vul 1 in en trek 20 rijen naar beneden
  • Vul een creatie datum en en kopieer naar alle rijen, hetzelfde met cre_user.
  • Vul onder cat_name de eerste cel met “Category1”, en trek ze 20 naar beneden.

Product – categorie koppeling

  • De koppeling heeft vooral sleutelvelden: id, prd_id, cat_id. Vul de id’s met opeenvolgende nummers, bv ook 100
  • Kopieer de kolomnamen cre_date, cre_user, upd_date, upd_user en de eerste rij van waarden uit het tabblad van de categorie, en kopieer de waarden naar de volgende rijen.
  • Kopieer de prd_id waarden uit de producten; daarmee weten we zeker dat we elk produkt hebben; of kies bv om de 20 laatste niet mee te kopiëren; die hebben dan nog geen categorie toegewezen gekregen in ons toekomstig systeem.
  • Voeg een kolom toe “randbetween”, en tik op de eeste lijn de formule: “=RANDBETWEEN(1;19)”. Daarmee maken we een willekeurige categorie; maar de laatste categorie “20” komt nog niet voer. Kopieer naar alle rijen. Kopie en plak speciaal om de waarden in de kolom cat_id te plakken.
  • Voeg rechts een kolomtitel toe “random”, en zet daarin een gewone random formule: “=RAND()”, kopieer ze over alle rijen. Selecteer de hele kolom, kopie, plak speciaal als waarde in een volgende kolom met title “random order”. Deze kolom met random waarden gebruiken we om de volgorde van de sleutels van de producten een beetje dooreen te gooien; nu lijkt er een verband te bestaan tussen de id van de koppeling en de id van het produkt, wat niet de bedoeling is.
  • Selecteer de kolommen vanaf prd_id tot random order. Kies in het Data menu de sorteeroptie. Klik eerst op opties, en zet dat de Range de kolomtitels bevat. Nu krijg je bij sorteer criteria een drop-down lijst met de kolomtitles onder “sort by”: kies “random order”
  • De eerste kolom moest blijven staan, en nu heb je een meer willekeurige invulling van de tabel met de koppeling van produkt en categorie.

Naar MySQL

  • Verwijder alle kolommen die maar dienden als tussentijdse hulp: random, random order, random prijs, random stock.
  • Start phpMyAdmin op het adres van de server of http://localhost/phpMyAdmin op je eigen computer. Ga op het hoogste niveau staan (servernaam of localhost bv), en kies de tab “Import”.

Je moet/kan daar 3 zaken opgeven:

  1. File to import: daar kies je met bestandbeheer het spreadsheet document dat je maakte.
  2. Partial import: kan je doen als je problemen ondervindt.
  3. Format of imported file: hier kies je Open Document Spreadsheet; dan krijg je wat extra opties: Options. Kijk bv naar:
    • Column names in first row: inderdaad.
    • Do not import empty rows: best wel.
  • Kies nu het bestand en “Go” om de import te starten.

Import has been successfully finished, 7 queries executed.

The following structures have either been created or altered. Here you can:

* View a structure`s contents by clicking on its name
* Change any of its settings by clicking the corresponding “Options” link
* Edit its structure by following the “Structure” link

* ODS_DB (Options)
o prd (Structure) (Options)
o cat (Structure) (Options)
o prdcat (Structure) (Options)

De naam van de database heeft hij helaas niet van het bestand genomen, maar is “ODS_DB” geworden.

Onder het tabblad “Operations” in phpMyAdmin kan je de naam veranderen: “Rename database to: ”

Als je een gebruiker aanmaakt en die de nodige rechten geeft (kan ook vanuit phpMyAdmin), is de database klaar voor gebruik:

SELECT prd_name, cat_name
FROM prd, `prdcat` , cat
WHERE prd.id = prdcat.prd_id
AND prdcat.cat_id = cat.id

SELECT cat_name, prd_name FROM prd, `prdcat`, cat WHERE prd.id=prdcat.prd_id AND prdcat.cat_id=cat.id AND cat.id<5 ORDER BY cat_id


Check zeker de omzetting bij de import; ik ontdekte dat sommige waarden niet werden gelezen en de kolommen “verschoven” ingelezen werden: als een waarde in twee opeenvolgende kolommen hetzelfde is (bv prd_stock=10 en prd_lastprice=10), wordt slechts die van prd_stock ingevuld, de andere “verdwijnt”, en er wordt voor het veld prd_lastprice verdergelezen in de volgende kolom cre_date!

Reacties zijn gesloten.

Powered by WordPress