mediatheek (1)

Hoe zit die mediatheek in elkaar, kreeg ik als vraag via e-mail (nadat ik eigenhandig mijn comments off-line had gehaald). Ewel, da’s simpel. Letterlijk. Geen fancy dingen; geen automatische lookups, zelfs geen admin tool. Alles wordt ingegeven via phpMyAdmin. (Wel, dat klopt niet helemaal: ik gebruik CocoaMySQL, maar dat doet eigenlijk krak hetzelfde.) Een zeer primitief systeempje.

Deel 1: de database.

Er zijn vijf tabellen in een MySQL database: work, author, series, wauthor en wseries.

work
De centrale tabel, waarin de cruciale identificatiegegevens van het item worden bijgehouden.
Bevat een id, de title, wat het is (audio, book, comic, movie), in welk formaat (hardcover, paperback, CD, SACD, LP, DVD, VHS), en facultatief het jaar, de lengte, de nummers van de barcode, de amazon ASIN, de imdb code, wanneer gekocht, waar gekocht en eventuele notities.
Wat het is, en het formaat zijn SETs, waardoor je dus meer dan 1 item kan kiezen
CREATE TABLE lib_work (
libw_id mediumint(9) unsigned NOT NULL auto_increment,
libw_title varchar(150) NOT NULL default '',
libw_media set('audio','book','comic','movie') NOT NULL default 'audio',
libw_format set('hardcover','paperback','CD','SACD','LP','DVD','VHS') NOT NULL default 'CD',
libw_year varchar(4) default NULL,
libw_length varchar(5) default NULL,
libw_code varchar(150) default NULL,
libw_amazon varchar(23) default NULL,
libw_imdb varchar(23) default NULL,
libw_when date default NULL,
libw_where varchar(50) default NULL,
libw_notes text,
PRIMARY KEY (libw_id),
KEY libw_title (libw_title,libw_media,libw_year)
) TYPE=MyISAM;
author
Een id, de voornaam, familienaam, en facultatief de geboortedatum, sterfdatum en notities. Die laatste drie velden heb ik nog nooit gebruikt.
CREATE TABLE lib_author (
liba_id mediumint(8) unsigned NOT NULL auto_increment,
liba_fname varchar(25) default NULL,
liba_lname varchar(50) NOT NULL default '',
liba_born date default NULL,
liba_died date default NULL,
liba_notes text,
PRIMARY KEY (liba_id),
KEY liba_fname (liba_fname,liba_lname)
) TYPE=MyISAM;
series
Voornamelijk in het leven geroepen voor de stripverhalen, maar is ook van toepassing voor de rest (John Zorn’s Masada bvb)
Een id, een naam, en notities.
CREATE TABLE lib_series (
libs_id mediumint(8) unsigned NOT NULL auto_increment,
libs_title varchar(50) NOT NULL default '',
libs_notes text,
PRIMARY KEY (libs_id),
KEY libs_title (libs_title)
) TYPE=MyISAM;
wauthor
En nu begint de leute: we linken de auteur aan het werk. Auteur wordt hier heel ruim gezien.
Een id, het work id, het author id, en de rol die de auteur speelt (alweer in een set): composer, conductor, editor, dessins, director, performer, scenario, writer
CREATE TABLE lib_wauthor (
libwa_id mediumint(9) unsigned NOT NULL auto_increment,
libwa_work mediumint(9) NOT NULL default '0',
libwa_author mediumint(9) NOT NULL default '0',
libwa_role set('composer','conductor','editor','dessins','director','performer','scenario','writer') NOT NULL default 'performer',
PRIMARY KEY (libwa_id)
) TYPE=MyISAM;
wseries
En hetzelfde voor de series.
Een id, het work id en het series id; en dan ook nog eens de plaats in de serie (deel 1, 2, 3 etc)
CREATE TABLE lib_wseries (
libws_id mediumint(9) unsigned NOT NULL auto_increment,
libws_work mediumint(9) NOT NULL default '0',
libws_series mediumint(9) NOT NULL default '0',
libws_order mediumint(9) NOT NULL default '1',
PRIMARY KEY (libws_id),
KEY libws_order (libws_order)
) TYPE=MyISAM;

Voila, een zeer eenvoudige database dus. Alle invulwerk gebeurt manueel. En ja, de benamingen en zo konden properder, maar het was eigenlijk alleen maar voor eigen gebruik bestemd, en niet voor publicatie.

Een gedachte over “mediatheek (1)”

Reageren niet meer mogelijk.