330 likes | 482 Views
Databasen I. Oversikt, noder og egenskaper. Designmål. XML-lignende struktur Utvidbarhet Aktivitet fra mange brukere Ingen eier data Gjenbruk av data. Musicbrainz. Henter data fra eksisterende DB 1.5 millioner registrerte lydspor Innlagt av brukere Mye ”feil” Spor: Tittel
E N D
Databasen I Oversikt, noder og egenskaper
Designmål • XML-lignende struktur • Utvidbarhet • Aktivitet fra mange brukere • Ingen eier data • Gjenbruk av data
Musicbrainz • Henter data fra eksisterende DB • 1.5 millioner registrerte lydspor • Innlagt av brukere Mye ”feil” • Spor: • Tittel • Versjonsinfo: Live, remix, instrumental, akustisk, radio edit. • Tempo for et fåtall • Årstall for et fåtall • Genre for et fåtall • Popularitet • Lengde • I album: Release (dato, land), albumtype, spornummer • Prosjekt (artist): • Tittel, sorteringstittel • http://www.musicbrainz.org/
At a glance • Består av noder (spor, artister, osv) • Noder har egenskaper (metadata) • Brukere og grupper (communities) • Brukere stemmer på metadata (passer/stemmer metadataene?) • Brukere kommenterer stemmer. • Brukere melder noder inn i communities • Brukere tagger noder. “Blå”, “Fart”, “Krig”. • Brukere ser på eller besøker noder.
Lab’er om databasen • DBI: Oversikt, noder og egenskaper • DBII: Sesjoner og leseeksempler • DBIII: Nodekoblinger og tags • DBIV: Stemmer og kommentarer
Informasjonsenheter. Tillater at samme type egenskaper brukes på forskjellige typer noder. Tabellen node: nodeid – Id’en til denne noden nodetype – Denne nodens type usrid, communityid, registered – Når og hvem som la inn denne noden. Nodetyper: Spor (track, 't') Artister (project, 'p') Sporlister (track list, 'l') Bokser (box, 'b') Brukere (user, 'u') Grupper (comunity, 'c') Genre ('g') Tag ('a') Entitet (entity, 'e') Noder
Tabeller: node PK: nodeid FK: usrid, communityid
SQL: node • Hent alle noder som er spor: SELECT * FROM node WHERE nodetype = ’t’ Resultat: Et par millioner rader…?
Rader: node Node
XML: node <nodenodeid=”123” nodetype=”t” usrid=”234” communityid=”345” registered=”May 17 2004 08:13PM”/>
Noder 2 Metadata/properties Nodes Tracks, projects, lists, etc Name, length, links, musical qualities, relationships, etc
Metadatatyper • Finnes en ordliste over lovlige metadatatyper i databasen. • Tabellen proptype: • proptypeid – Id’en til metadatatypen (PK) • name – Navnet til metadatatypen • (En del kolonner til, mer senere)
Tabeller: proptype (forenklet) proptype
Koble metadatatyper til noder • Kobling mellom node og proptype • Tabellen property • propid – Id’en til denne egenskapen (PK) • nodeid – Id’en til noden egenskapen er knyttet til. • nodetype – Typen node • proptypeid – Id’en til egenskapstypen egenskapen har. • usrid, communityid, registered – Info om når og hvem egenskapen ble opprettet av
SQL: property • Alle egenskaper for en gitt node: SELECT * FROM property WHERE nodeid = 123
Rader: property property
SQL: node-property-proptype • Hent alle egenskaper for en gitt node, med navn på egenskapstypen. SELECT propid, proptypeid, name FROM property, proptype WHERE nodeid = 123 AND property.proptypeid = proptype.proptypeid
Mer om egenskaper • Egenskaper (properties) er metadata om en node • Viser til en metadatatype (fra proptype) • To typer egenskaper: • Properties: “Boolske”, tilstede eller ikke. • Eks: • medium-genre-cd - Er sporlisten en CD? • recording-live - Er sporet tatt opp live? • Attributes: Tar verdi som parameter. • Eks: • label-name (tekststreng) - Nodens navn • member-community (nodereferanse) - Er noden medlem av et community? • Implementert som et arveforhold: • Attribute er en spesialisering (subtype/subklasse) av property
Attributter • Egenskaper som tar en verdi. • Kopieres fra property. • Tabellen attribute (forenklet): • Alle felter fra property: propid, nodeid, nodetype, proptypeid • Minus: usrid, communityid, registered. NB! • value – Generell strengverdi • number - Tallverdi • url - URL-verdi • datetime - Datoverdi • ref – Referanse til annen node.
Koblinger: node-property • node • PK: nodeid • property: • PK: propid • FK: • nodeid (node) • proptypeid (proptype) • attribute • Arver alt (nesten) fra property • proptype • PK: proptypeid
Rader: node-property/attribute attribute proptype
XML: Noder og egenskaper <nodenodeid=”123” nodetype=”t” usrid=”234” communityid=”345” registered=”May 17 2004 08:13PM”> <attributepropid=”456” proptypeid=”567” value=”Another brick in the wall”/> … </node> … <proptype> <prop proptypeid=”567” name=”label-name” value=“1” number=“0”/> … </proptype>
Mer om egenskapstyper • Metadatatyper befinner seg i proptype • “Ordliste” for gyldige metadatatyper. • Inndelt i hierarkier • Generalisert og spesialisert, supertyper og subtyper • Eks på et hierarki: • instrumentation-acoustic • instrumentation-acoustic-strings • instrumentation-acoustic-horns • instrumentation-acoustic-keys • Muliggjør: • Spørringer over hele hierarkier. Hierarkiene ligger sortert i proptype • En stemme på en subtype er også en stemme på dens supertype.
Spesialtabeller • Noen egenskaper er ofte brukt, derfor duplisert i egne tabeller: • Noders navn: (egenskap) label-name (tabell) name • Noders skapere: creator-performer creator • Spor i sporsamlinger: tracklist-item tracklistitem • Tags på noder: member-tag tag • Muliggjør: • Lettere oppslag med SQL • Mindre ressursbruk
SQL-eksempler /* Navnet til en vilkårlig node */ SELECT name FROM name WHERE nodeid = 123; /* Navnet til en liste et spor forekommer på*/ SELECT name FROM name, tracklistitem WHERE tracklistitem.trackid = 123 AND tracklistitem.nodeid = name.nodeid;
Hjemmelekse • Finn nodeid’en til alle spor med navnet ’Another brick in the wall’. (name) • Finn alle egenskapene, med navn på type, til en av nodene over. (name, property, proptype) • Finn ut hva en JOIN er. • Finn alle spor, med navn, som forekommer på skiva ’Venus, Texas’. (name, tracklistitem) • Vanskelighet: Bare ett query! • Tips: Tabeller kan gis alias og opptre flere ganger. • Finn artisten, med navn, bak en av nodene med navnet ’Sweet home Alabama’. (name, creator) • Vanskelighet: Bare ett query! • Oppfør dere pent. • Ta med et eple til labansvarlig.
Ukas kulturelle innslag “We don’t need no education. We don’t need no thought control. No dark sarcasm in the classroom. Teacher, leave them kids alone!” - Another brick in the Wall, Pink Floyd