Foreign Key Constraints en Display fields in phpMyAdmin

Een van de handigheden in phpMyAdmin is dat je bij een aantal storage engines zoals innoDB  en myISAM een ‘display field’ kan instellen.

Het display field is eigen aan phpMyAdmin en heeft niets met mySQL te maken. Wanneer je een display field aanmaakt via phpMyAdmin zal zich dat niet vertaald zien in bvb mySQL Workbench.

Bij INNODB kan dit ook nog een extra aanvulling zijn op  foreign keys .

Bij het invoegen van een record wordt automatisch een drop down lijst gegeven van de mogelijke opties wanneer een relatie gelegd is naar een andere tabel. Indien een foreign key constraint bestaat voor een bepaald veld wordt niet alleen een ID getoond naar de verwijzende tabel, maar ook een omschrijving (display field) van de verwijzende tabel. Dit biedt het voordeel dat je niet eerst de verwijzende tabel moet openen en daar gaan zoeken naar de juiste ID.

Laten we uitgaan van het voorbeeld dat je ook op Wikipedia kan terugvinden. Een tabel waarin je de namen van je klanten bewaart en een tabel waarin de bestellingen van alle klanten opgesomd zijn. Elke bestelling wordt geplaatst door een bepaalde klant. In de bestellingentabel definiëren we dus een foreign key naar de tabel klanten.

Tabel 1: klanten

id
naam

Tabel 2: bestellingen

id
artikel
klant (foreign key naar klanten.id)

Het ‘display field’ instellen gebeurt in de ‘relation view’ van de verwijzende tabel (namelijk klanten). Deze relation view is toegankelijk in het structuur menu van de tabel. Als display field kies je in dit geval dus ‘naam’.

Wanneer je nu bestellingen gaat invoeren via phpMyAdmin krijg je bij het invulveld klant een dropdown lijst te zien met de namen (en bijhorende id) uit de klantentabel. Het voordeel is dus dat je niet in een apart venster eerst de id moet gaan opzoeken die bij een bepaalde naam hoort.

Als je meer dan 200 klanten hebt, zal er geen dropdown meer verschijnen, maar een zoekvenster. (zie pmaWiki)

Er is wel een nadeel verbonden aan ‘display fields’. Ze worden namelijk niet geëxporteerd bij het nemen van backup van de database. Dit komt omdat de ‘display field’ een functie is van phpMyAdmin zelf, en niet van MySQL.

Null waarde als (deel van) primary key in MYSQL

Lijkt evident, maar is het niet: als je een samengestelde ‘primary key’ definieert in mySQL waarbij een van de delen van de primary key NULL-waarden kan bevatten en identieke rijen wil uitsluiten, kom je bedrogen uit.

Neem bijvooorbeeld volgende tabel waarbij je twee identieke rijen wil uitsluiten met behulp van de samengestelde primary key ‘user, e-mail, label’:

user email label
1 test@test.be 2
2 test2@test.be NULL
2 test2@test.be NULL

Rij 2 en 3 zijn voor jou als gebruiker identiek op het eerste zicht en zouden elkaar dus logisch uitsluiten. De database zou de derde rij niet mogen toelaten indien een samengestelde primary key is opgesteld over ‘user, email en label’, maar aangezien voor MySQL NULL waarden nooit identiek zijn, is dergelijk situatie perfect mogelijk in MySQL en moet je dus op zoek gaan naar een andere oplossing!

Verslag 100 km dodentocht Bornem 2009

Het is voor een tweede keer gelukt: de dodentocht tot een goed einde brengen. Ook dit jaar had ik weer hard aan de ‘ronsel’-bel getrokken en ik leek er nog goed in te slagen, maar tegen het einde vielen toch twee kameraden van het eerste uur af. Gelukkig ging Yves een tweede poging wagen en Jimmy wou het toch ook eens proberen. Alledrie zonder voorbereiding, respect alom dus!

Dodentocht 2009 aankomst
Dodentocht 2009 aankomst

Continue reading “Verslag 100 km dodentocht Bornem 2009”

100 km dodentocht Bornem 2009

dodentocht_logoOok dit jaar kan je me weer verwachten aan de start van de dodentocht. Of dat ook nog zo zal zijn aan de finish, valt nog te af te wachten. Mijn startnummer dit jaar is heel gemakkelijk: 345

Mijn medestappers dit jaar: Jimmy 354, Yves 504

Je kan ons vanaf vrijdag 21.00 volgen op http://tracking.dodentocht.be/ of rechtstreeks via de volgende links:

Jan – http://tracking.dodentocht.be/Default.aspx?s=345
Jimmy – http://tracking.dodentocht.be/Default.aspx?s=354
Yves – http://tracking.dodentocht.be/Default.aspx?s=504

XHTML: some good practices

Some good practices on XHTML

  • <doctype> always use a doctype before <html>-tag: don’t get in quirksmode –recommended list of doctypes (W3 schools)
    • Transitional is most common
    • Strict: prohibits the use of target=”_blank” and a few other HTML tags, like s, center, strike, u, applet, iframe, font, isindex, dir, basefont
  • <h1> Only one h1 per page: use for the main topic
  • <blockquote> Only to refer to bits of text coming from other locations
  • <q> Use for a single ‘quote’
  • <table> Never use for lay-out purposes
  • <cite> References to books, websites, articles
  • <address> identify contact information to the author of a page

Other usefull tips

Disallow compatibility mode

Tell Internet Explorer never to go into compatibilty mode (use an older IE engine than the one installed). Put this after the <title>-tag:


Linking style sheets

Use <link> for simplicity and better performance


Validate your code

http://validator.w3.org

Forget about HTML attributes like

  • vspace
  • hspace
  • bgcolor
  • text
  • link
  • alink
  • vlink
  • img align: use CSS-floats instead

Low level format browser specific attributes like

  • leftmargin
  • topmargin
  • marginwidth
  • marginheight

Verslag 100 km dodentocht Bornem 2008

08 augustus 2008 – Mijn tweede dodentocht is met succes beëindigd. Vorig jaar moest ik daarvoor een trouw en een feest missen. Dit jaar kon ik (448) echter zelf een paar vrienden mobiliseren om mee te stappen. Yves (742), Rosanne (5100), Allaart (5101) en Stefan (8020) gingen zich ook eens wagen aan deze waanzinnige opdracht.

08 augustus 2008 – Mijn tweede poging om de dodentocht uit te stappen is met succes beëindigd. Vorig jaar moest ik daarvoor een trouw en een feest missen. Dit jaar kon ik (448) echter zelf een paar vrienden mobiliseren om mee te stappen. Yves (742), Rosanne (5100), Allaart (5101) en Stefan (8020) gingen zich ook eens wagen aan deze waanzinnige opdracht.

Continue reading “Verslag 100 km dodentocht Bornem 2008”

Citytrip Parijs

Hieronder wat we allemaal bezochten tijdens onze citytrip Parijs

Vrijdag

  • Thalys Gent Sint Pieters – Gare Du Nord
  • Sacré Coeur
  • Place du Tertre (Montmartre)
  • Moulin Rouge
  • Bateaux parisiens
  • Tour Eiffel / Champs de Mars
  • Mexicaans eten (Chiapaas)

Zaterdag

  • Arc de Triomphe
  • Graf onbekende soldaat
  • Champs-Élysées
  • Virgin Megastore / Maison de Disney
  • Petit Palais (ext)
  • Grand Palais (ext)
  • Pont Alexandre III
  • Hotel Les Invalides
  • Musée de l’armée
  • Crypte Napoléon
  • Place de la Concorde
  • Les Tuileries
  • Le Louvre
  • Eglise Saint-Germain (ext)
  • L’institut de France (ext)
  • Pont Neuf
  • Place de la République

Zondag

  • Le Bastille
  • L’Opéra (ext)
  • Metro Arts & Métiers
  • Centre Pompidou
  • Le Notre Dame
  • Tour de Notre Dame
  • Crypte Notre Dame
  • La conciergerie
  • Église Saint-Étienne-du-Mont (ext)
  • Faculté des Droits (ext)
  • Crypte Panthéon
  • Jardin du Luxembourg
  • La Sorbonne (ext)
  • Eglise Saint-Sulpice
  • Eglise Saint-Sulpice (La messe)
  • Tour Montparnasse
  • Fujimara Sushi

Zondag

  • Cimetière Père Lachaise
  • Chateau de Vincennes
  • Galleries Lafayette
  • Café Du Nord
  • Souvenirs
  • Thalys Gard Du Nord – Gent Sint Pieters

Verslag 100 km dodentocht Bornem 2007

19 augustus 2007 – Mijn eerste dodentocht zit er op! Het is nu een week later, wat niet wil zeggen dat ik een week zo stijf ben geweest dat ik niet in staat was een verslag te schrijven.

19 augustus 2007 – Mijn eerste dodentocht zit er op! Het is nu een week later, wat niet wil zeggen dat ik een week zo stijf ben geweest dat ik niet in staat was een verslag te schrijven.

Bottom-line: ik ben om 21.15 over de start gestapt en ben om 6.08 gestopt in Londerzeel. In die tijdspanne heb ik twee pauzes genomen van 10 minuten. Eentje in Ruisbroek en eentje in Breendonk (zonder mezelf over te geven aan de Duvel). Concreet is dat een afstand van een kleine 47 km en 52400 stappen tegen een gemiddelde snelheid van 5.4 km per uur.

Continue reading “Verslag 100 km dodentocht Bornem 2007”