22/2/2015

Databank collation (bv mysql): utf8-belgisch-ci ?

Filed under: — cybrarian @ 11:04 pm

Bij het maken van een nieuwe databank in MySQL (& -achtigen) moet je kiezen welke “collation” je wil.
Dit is de taalgevoeligheid van de databank, en komt tot uiting in sorteringen.
Voor een toepassing die enkel van belang is voor je eigen taalgroep, kies je voor een UTF8-islandic-ci (bv). Maar er komt geen “Belgisch” voor, en evenmin “Frans” of “Nederlands” of “Vlaams”, indien het al wenselijk zou zijn.

In de lijst zie je dikwijls de uitgang “_ci”: die staat voor Case Insensitive; dwz hoofdletter-ongevoelig. Dat kan een voordeel zijn bij sorteren komt “Dit” en “dit” bijeen te staan.

De meer algemene systemen zijn:
– utf8_general_ci : behandelt alle tekens als ASCII, dus behandelt “A” en “a” hetzelfde, en zet om: ù als u; mogelijk iets sneller, en mogelijk de standaard instelling (mysql 5.x)
– utf8-bin : hoofdlettergevoelig.
– utf8_unicode_ci : sorteert wel rekening houdend met aantal eigen taal-letters, bv Duitse “ß” als “ss”, niet hoofdlettergevoelig.

De twee laatsten lijken de meest aangewezen, naargelang de inhoud van de data.

  • Voor puur abstracte dingen als random productcodes wil je misschien onderscheid maken tussen hoofd- en kleine letters, en vooral tussen een mét een accent en een zonder in een lijst met sleutelwaarden (key-values); dus utf-bin.
  • Voor meer algemene tekst-data waar woorden of namen in voorkomen, voor Engels/Nederlands/Frans/Duits, is utf8_unicode_ci waarschijnlijk het handigst.

Powered by WordPress