key-value pairs
TRANSCRIPT
key-value pairs
( t h e ) Little Data Projectlittledataproject.org
key-value pairs
A key is a field name, an attribute, an identifier. The content of that field is its value, the data that is being identified and stored.
key-value pairs
A field name, together with the data entered into that field, is a key-value pair.
a unique identifier
A key is a unique identifier, and a value is the actual data that is being identified.
show me an example
For instance, in a Contacts database (i.e., an address book), each record will have a field called "city".
city: “Buffalo”
Every record contains the key "city", and in one particular record its value might be "Buffalo". It's pretty straightforward.
city: “Toronto”
In another record in the same Contacts database, the city might be "Toronto”. Same key, different value.
age 19: “yes”
Now the pair above is not well designed. The key itself holds some data, which is a no-no.
Data should be only be stored in the value.
age 19: “yes”
And what if:
age 19 = "no” … ?
How old is the person then?
consistency
In a relational database, each record includes the same keys. Each record is consistent: it is similar to its neighbor in structure (the keys), but different in content (the values).
good questions
Consistency makes it easy to ask the database some good questions. Often we are looking for some particular value, and the key helps us find it.
good questions
In the following examples, each record includes a field with the key "city", and each record has a value entered into that field. There are all sorts of things we can ask (query) the database.
who lives in Buffalo?
"George Hanna", "Lisa Durante", "Carl Young"
"Buffalo" is the value listed in the field named "city" in each of these three records. In other records, another city is listed (or no city is recorded).
SELECT * from Contacts WHERE city == "Buffalo"
what cities are listed in the db?
"Buffalo", "Hamilton", "Dallas", "Toronto"
Across all the records in the database, these city names are mentioned in the field named "city". This database holds twenty records. "Buffalo" is listed in three different records.
SELECT DISTINCT city from Contacts
where does Jim Smith live?
"Dallas"
Tell the database management system to go to Jim Smith's record and return the value of the city field.
SELECT city WHERE person == “Jim Smith”
when did Jim Smith live in Dallas?
Can't say. But maybe if we had included more key-value pairs in each record, this query could have been answered.
beginning : "1998"ending : "2005"
SELECT beginning WHERE person == "Jim Smith" & city == "Dallas"
SELECT ending WHERE person == "Jim Smith" & city == "Dallas"
why did Jim Smith live in Dallas?
This database is just an address book. It does not contain the kind of data needed to answer this query. A useful design might include these keys:
workhometownspouse
good design
When designing a database, we should consider what questions we will want answered. Then we can make sure we capture the data needed to answer those questions.
Database design starts with key-value pairs.
( the ) Little Data Projectlittledataproject.org