verschil id/key
Vinden jullie dat er een verschil zit tussen een ID en een key?
Stel we hebben een array:
Wat klinkt dan logischer?
óf
En stel dat het ID/key een woord is, wat vind je dan logischer?
Wat klinkt nu logischer?
óf
Gevoelsmatig, maar dat is dus heel persoonlijk, heb ik een lichte neiging om bij een getal (zoals bij het product) een ID logischer te vinden, terwijl ik bij een woord (zoals bij language) een lichte voorkeur heb voor een key.
Ervaren jullie dit ook zo? Of juist helemaal niet? Het gaat er bij deze vraag niet om wie er gelijk heeft. Ik ben met name beniewd of jullie een verschil ervaren tussen een ID en een key.
Gewijzigd op 03/05/2014 18:58:49 door Ozzie PHP
ID is een identifier, zolang de string uniek blijft (en dat is ie, omdat een key altijd uniek is) kun je hem dus id noemen.
Dankje Wouter. Is er voor jouw gevoel dan ook geen verschil tussen een key en een id(entifier)?
Hetzelfde verschil als tussen een hond (key) en een dier (id). Een key is een vorm van ID, maar een ID is geen key.
Huh? :) Wat bedoel je?
key betekend letterlijk natuurlijk sleutel... Dan denk ik weer meer aan beveiligingen eigenlijk.
Bij array's praat men over index en element maar ook wel over key en value.
Bij databases of html elementen meestal weer over id's ...
Uiteindelijk is het allemaal min of meer hetzelfde lijkt mij.
Ze zijn alle drie uniek zoals wouter al aangaf
Oké... maar het lijkt me lastig om de ene keer over key te hebben en dan weer over een id. Dus dan kan ik het beter maar bij id houden.
Wanneer je het over een data structuur hebt waarin 0 of meer objecten in kunnen staan heb je het over keys. De unieke ID(entifier) is zoals wouter zei een prima key. Als de key een waarde van 0 tot <aantal elementen in data structuur> is en de key van element nummer n de waarde n-1 heeft, dan is de key ook nog een index.
Een key kan tegelijkertijd een ID en index zijn.
Of alleen een ID/index.
Of geen van beide. (Een hash bijvoorbeeld.)
Dat is hoe ik het zie.
Gewijzigd op 03/05/2014 22:30:06 door Dos Moonen
Hmmm, oké. Maar als ik de banaming ID gebruik om iets op te halen, zit ik dus eigenlijk altijd wel goed?
Naar mijn idee? Nee. key is algemener dan ID. Maar alleen wanneer je het over een data structuur (array, list, set, map) hebt.
Dan gebruik je key of id?
Stel ik heb een array met daarin "paden" en nu wil ik het pad voor de images ophalen, dus $path['images'], dan is images een key... maar toch ook een ID?
Waarom is 'images' het ID voor path /Users/Darsstar/images maar niet /Users/Ozzie/images ? '/Users/Darsstar/images' zou dan weer wel een goede ID zijn voor path /Users/Darsstar/images...
Het ID hoort bij/is deel van de value. Het is uniek onder alle verschillende values. Omdat het uniek is kun je het dus als een key gebruiken.
Ah zo bedoel je... als je meerdere image mappen zou hebben dan zou je inderdaad foo_images en bar_images als ID krijgen. Dat bedoel je toch denk ik?
Nee, want dan heeft die ene images map dus al 2 identifiers: images (wanneer hij in zijn eentje was) of foo_images (wanneer er ook nog een bar is). Dan is het dus geen identifier meer.
Stel ik heb een array:
Wouter, dos en Ozzie zijn hier keys, maar tegelijkertijd toch ook ID's?
Computer science
- Lookup table, a data structure, usually an array or associative array, often used to replace a runtime computation with a simpler array indexing operation
- Array index, an integer pointer (into an array data structure) that identifies an element of the array
- A key in an associative array
- Database index, a data structure that improves the speed of data retrieval operations on a database table
http://en.wikipedia.org/wiki/Index
Wat is een ID dan?
aaaah... ik word gek :-/
KeY, a software verification tool
Key, a data element which allows one to find associated data using a database index or a hash table
http://en.wikipedia.org/wiki/Key
Toevoeging op 04/05/2014 00:21:01:
Zover ik het nu beoordeel is spreek je van een index bij een gewone array en bij een associatieve array spreek je dan van een key.
>> Key, a data element which allows one to find associated data using a database index or a hash table
Dit is toch hetzelfde?
Toevoeging op 04/05/2014 00:35:16:
Pfff... k zie het nu even niet meer. Vooral de opmerking van Wouter:
"Nee, want dan heeft die ene images map dus al 2 identifiers: images (wanneer hij in zijn eentje was) of foo_images (wanneer er ook nog een bar is). Dan is het dus geen identifier meer."
Jij heet Ozzie (niet waar, maar we nemen dat nu even aan :p) en ik heet Wouter. Nou, denk je dat zijn hele mooie identifiers voor ons. Als je het hier op het forum hebt over "Wouter", dan denkt iedereen waarschijnlijk wel aan mij en als we het hebben over "Ozzie" dan denkt iedereen waarschijnlijk aan jouw. Maaarrr, nu komt er een "Ozzie JS" op het forum. Als we het dan hebben over "Ozzie", dan weet niemand meer of we jouw bedoelen of Ozzie JS. "Ozzie" is dus niet meer een correct identifier voor jouw of die andere ozzie. Dat betekend dat die "Ozzie" in het begin al geen goede identifier was en die "Wouter" dus ook niet.
Wat is dan wel een goede identifier? Nou, iets wat altijd uniek blijft. Denk bijv. aan jouw userid. "24209" komt jouw natuurlijk al meteen voor als Ozzie PHP (niet waar, maar voor het PHP systeem wel). "23590" is dan ik. Als nu die nieuwe Ozzie JS het forum op komt krijgt hij "30668" als userid, dat betekend dat jouw id nog steeds alleen uniek voor jouw is. Het userid is dus iets wat altijd uniek blijft en het is dus een goede identifier.
Nu is dat hetzelfde met de voorbeelden die jij gaf. Als je /Ozzie/Cms/import/images "images" noemt en er komt nog een images folder bij, dan moet je dus beide "images" gaan hernoemen naar "ozzie_images" en "wouter_images". En stel er komt nog een nieuwe images folder bij in de Ozzie map, dan moet je "ozzie_images" hernoemen naar "ozzie_cms_images" en "ozzie_framework_images". Dit is dus geen goede identifier, het is niet altijd uniek.
Oké... tot zover snap ik het. Alleen nu twijfel ik dus wel of m'n benamingen kloppen, of dat ik ze anders moet gaan noemen.
Wat ik bijv. wil doen is dat ik makkelijk (ik kom maar even terug op dit voorbeeld) een pad kan oproepen.
Stel ik wil een images pad oproepen, dan wil ik zoiets kunnen doen: echo $path->get('images'). Alle paden staan in een array, dus 'images' is altijd uniek. Maar inderdaad, komt er een 2e 'images' map bij, dan heb ik een probleem.
Nu is mijn eerste vraag, in het voorbeeld hierboven noem ik 'images' een ID. In de method gebruik ik dus ook de variabele $id. Klopt dat? Is de naam $id juist?
En dan de 2e vraag... hoe krijg ik die id/key/index 'images' dan uniek? Door ze meteen al vanaf het begin een unieke naam te geven? Dus niet 'images', maar 'ozzie_images'? Is dat de oplossing?
Gewijzigd op 04/05/2014 15:06:03 door Ozzie PHP