Database Structure
This guide discusses the underlying database structure for the games and books that are detailed on this site. There are other forms of data structure (relating to images, files, weblinks, users, forums, geeklists, etc.) but these are not discussed here. This guide covers just the information about the core database.
Global Structure
The convention is to denote a particular data structure by enclosing it in square brackets. For example one could refer to a [boardgame] which would be a data entry for an individual board game.
There are seven major data types. Each of these types has subtypes which differ by the various domains of this collection of sites. But the ID numbers are unique for any given type. For example [boardgames] and [rpgitems] are subtypes of [thing]; the ID numbers for [things] are unique and shared between its subtypes, such that any one [thing] could have the [boardgame] or [rpgitem] subtype, but different [boardgames] and [rpg items] will never have the same ID number.
Members of any subtype can be referred to by their overarching data type as well. So, for example, [thing] 1 can be referred to as:
- http://boardgamegeek.com/boardgame/1/die-macher
- http://boardgamegeek.com/thing/1/die-macher
In fact because the data structure is global across all sites, the following URLs will also work:
- http://rpggeek.com/boardgame/1/die-macher
- http://rpggeek.com/thing/1/die-macher
- http://videogamegeek.com/boardgame/1/die-macher
- http://videogamegeek.com/thing/1/die-macher
The same holds true for the format of forum links (for example [thing=1][/thing] or [boardgame=1][/boardgame]) and wiki links (for example [thing=1] or [boardgame=1]).
Note that if you refer to an object by its high level data type then it will default to a view that depends on that object's subtypes and the domain from which you are viewing the object. For objects with only one subtype, this makes no difference, so [thing] 1 will always return the [boardgame] Die Macher. But some objects may have multiple subtypes. In particular, a [company] or [person] could be credited fro games from multiple domains.
The seven data types and their subtypes are...
[property] for storing fixed lists of attributes that apply to the various types of database items:
- for BGG: [boardgamemechanic], [boardgamecategory]
- for RPGG: [rpgmechanic], [rpgcategory], [periodicalcategory], [rpgissuearticlecat]
- for VGG: [videogamegenre], [videogametheme], [videogamemode], [videogamehardwarecategory], [videogamerating]
[family] for various types of collections in which individual database items are members:
- for BGG: [boardgamesubdomain], [boardgamefamily], [boardgamepodcast]
- for RPGG: [rpggenre], [rpgsystem], [rpgfamily], [rpg], [rpgperiodical], [rpgsetting], [rpgseries], [rpgpodcast]
- for VGG: [videogamefranchise], [videogameseries], [videogameplatform], [videogamecharacter]
[thing] for individual tangible (or virtual) items that can be collected:
- for BGG: [boardgame], [boardgameexpansion]
- for RPGG: [rpgitem], [rpgissue]
- for VGG: [videogame], [videogamehardware]
[version] for noting the differences in various editions or versions of individual [things]:
- for BGG: [boardgameversion]
- for RPGG: [rpgitemversion], [rpgissueversion]
- for VGG: [videogameversion]
[media] for holding information on specific subsections of certain types of [thing]:
- for BGG: [boardgamepodcastepisode]
- for RPGG: [rpgissuearticle], [rpgpodcastepisode]
- for VGG: [vgwalkthrough]
[company] for holding information about companies and organisations that have published database items:
- for BGG: [boardgamepublisher]
- for RPGG: [rpgpublisher]
- for VGG: [videogamedeveloper], [videogamepublisher], [videogamehwmfg]
[person] for holding information about an individual contributor to one of the database items:
- for BGG: [boardgamedesigner], [boardgameartist]
- for RPGG: [rpgdesigner], [rpgartist], [rpgproducer]
- not applicable for VGG
More detail on each of these individual subtypes is given in the relevant sections below, split by domain.
BoardGameGeek
To be completed.
RPG Geek
"Links up" refer to those links from a database entry that appear in the Information module. "Links down" refer to those links from a database entry that appear in the Linked Items module.
[family] subtypes
[rpggenre] - http://rpggeek.com/browse/rpggenre
- A list of genres to which any individual RPG item can be assigned. For example Fantasy (High Fantasy) or Science Fiction (Hard Sci Fi).
- This object type has a generic entry: Generic / Universal.
- Links down to [rpgitem] (many to many; required for [rpgitem])
- Links down to [rpgperiodical] (many to many; required for [rpgperiodical])
- Links to [rpgpodcastepisode] (many to many; optional)
[rpgsystem] - http://rpggeek.com/browse/rpgsystem
- RPG systems that apply to more than one RPG. An [rpgsystem] entry is only appropriate for systems that are used by multiple RPGs. For example d20 System or Basic Role-Playing (BRP).
- Links down to [rpg] (many to many; required for [rpgsystem])
- Links down to [rpgseries] (many to many; optional)
- Links down to [rpgsetting] (many to many; optional)
[rpgfamily] - http://rpggeek.com/browse/rpgfamily
- Families of RPGs, used to link related RPGs or periodicals together. Typically this is used to link separate editions of the same RPG, where the rules have changed significantly between editions (such that the editions have separate [RPG] entries). Alternatively it can be used to link single-RPG periodicals to the related RPG. An [rpgfamily] entry is only appropriate for RPGs and/or periodicals that need to be linked in this way. For example Dungeons & Dragons or Traveller.
- Links down to [rpg] (many to many; [rpg] or [rpgperiodical] link required for [rpgfamily])
- Links down to [rpgseries] (many to many; optional)
- Links down to [rpgsetting] (many to many; optional)
- Links down to [rpgperiodical] (many to many; [rpg] or [rpgperiodical] link required for [rpgfamily])
[rpg] - http://rpggeek.com/browse/rpg
- An [rpg] entry represents the intangible role-playing game itself, rather than the books the codify the rules for the game. An [rpg] may have several sourcebooks which are the linked [rpgitems]. For example Call of Cthulhu (1st Edition) or Vampire: The Masquerade (1st, 2nd & Revised Editions).
- This object type has three generic entries: Generic / Universal, Unpublished Prototypes, RPG Sandbox.
- Links up and down to [rpgfamily] (many to many; [rpg] or [rpgperiodical] link required for [rpgfamily])
- Links up to [rpgsystem] (many to many; required for [rpgsystem])
- Links up to [rpgmechanic] (many to many; required for [rpg])
- Links down to [rpgitem] (many to many; required for [rpgitem])
- Links down to [rpgseries] (many to many; optional)
- Links down to [rpgsetting] (many to many; optional)
- Links down to [rpgissue] (many to many; optional)
- Links down to [rpgpodcastepisode] (many to many; optional)
[rpgperiodical] - http://rpggeek.com/browse/rpgperiodical
- Magazines, journals, newsletters, and other periodicals that have RPG-related contents. For example Dragon or Knights of the Dinner Table.
- Links up to [periodicalcategory] (many to many; required for [rpgperiodical])
- Links up to [rpggenre] (many to many; required for [rpgperiodical])
- Links up to [rpgfamily] (many to many; [rpg] or [rpgperiodical] link required for [rpgfamily])
- Links down to [rpgissue] (many to many; required for [rpgissue])
[rpgsetting] - http://rpggeek.com/browse/rpgsetting
- The campaign world settings that are used for role-playing games. An [rpgsetting] entry is only appropriate for settings that are detailed beyond the description in the core rulebooks. For example Forgotten Realms or The World of Darkness (nWoD).
- Links to [rpgsystem] (many to many; optional)
- Links up to [rpgfamily] (many to many; optional)
- Links up to [rpg] (many to many; optional)
- Links down to [rpgitem] (many to many; optional)
- Links down to [rpgissuearticle] (many to many; optional)
- Links down to [rpgpodcastepisode] (many to many; optional)
[rpgseries] - http://rpggeek.com/browse/rpgseries
- We use a series to link together related objects in all of the various ways that are not handled by the other RPG data structures. Typically these are used to link together related books or a series of articles that spans several issues of a magazine. For example G - Giants or 2010 RPG Geek 24 Hour RPGs.
- Links up to [rpgfamily] (many to many; optional)
- Links up to [rpg] (many to many; optional)
- Links up to [rpgsystem] (many to many; optional)
- Links down to [rpgitem] (many to many; optional)
- Links down to [rpgissuearticle] (many to many; optional)
- Links down to [rpgpodcastepisode] (many to many; optional)
[rpgpodcast] - http://rpggeek.com/browse/rpgpodcast
- Podcasts with RPG-related content can be given an entry. Individual episodes then populate the database automatically through RSS feeds. For example Fear the Boot or 2d6 Feet in a Random Direction.
- Links down to [rpgpodcastepisode] (many to many; required for [rpgpodcastepisode])
[thing] subtypes
[rpgitem] - http://rpggeek.com/browse/rpgitem
- The elementary books and other related items that are used for role-playing games. These are the individual items that can be collected. It is possible that a single book may contain the rules for or be written to accompany several RPGs, in which case that one [rpgitem] will link to more than one [rpg]. For example Delta Green: Countdown or Diaspora.
- Links up to [rpg] (many to many; required for [rpgitem])
- Links up to [rpggenre] (many to many; required for [rpgitem])
- Links up to [rpgsetting] (many to many; optional)
- Links up to [rpgseries] (many to many; optional)
- Links up to [rpgcategory] (many to many; required for [rpgitem])
- Links up to [rpgmechanic] (as an automatically generated link via [rpg])
- Links up to [rpgdesigner] (many to many; required for [rpgitem])
- Links up to [rpgartist] (many to many; required for [rpgitem])
- Links up to [rpgproducer] (many to many; required for [rpgitem])
- Links up to [rpgpublisher] (many to many; required for [rpgitem])
- Links down to [rpgitemversion] (one [rpgitem] to many [rpgitemversions]; required for both [rpgitem] and [rpgitemversion])
- Links down to [rpgissuearticle] (many to many; optional)
- Links down to [rpgpodcastepisode] (many to many; optional)
[rpgissue] - http://rpggeek.com/browse/rpgissue
- Individual (RPG-related) issues of a periodical. Sometimes there are crossover issues that link to more than one periodical (such as Utter Drivel (Issue 7)). For example Dungeon (Issue 1 - Sep 1986) or Journal of the Travellers' Aid Society (Issue 1).
- Links up to [rpgperiodical] (many to many; required for [rpgissue])
- Links up to [rpgdesigner] (many to many; required for [rpgissue])
- Links up to [rpgartist] (many to many; required for [rpgissue])
- Links up to [rpgproducer] (many to many; required for [rpgissue])
- Links up to [rpgpublisher] (many to many; required for [rpgissue])
- Links up to [rpg] (many to many; optional)
- Links down to [rpgissuearticle] (one [rpgissue] to many [rpgissuearticles]; required for [rpgissuearticle])
- Links down to [rpgissueversion] (one [rpgissue] to many [rpgissueversions]; required for both [rpgitem] and [rpgissueversion])
[media] subtypes
[rpgissuearticle] - http://rpggeek.com/browse/rpgissuearticle
- Each single article for every issue of every periodical can have an [rpgissuearticle] entry. For example Tortles of the Purple Sage - Part 1 or Hot Gossip: Industry News.
- Links up to [rpgissue] (many [rpgissuearticles] to one [rpgissue]; required for [rpgissuearticle])
- Links up to [rpgdesigner] (many to many; required for [rpgissuearticle])
- Links up to [rpgissuearticlecat] (many to many; required for [rpgissuearticle])
- Links up to [rpgitem] (many to many; optional)
- Links up to [rpgseries] (many to many; optional)
- Links up to [rpgsetting] (many to many; optional)
[rpgpodcastepisode] - http://rpggeek.com/browse/rpgpodcastepisode
- Each individual episode of an RPG-related podcast is stored as an [rpgpodcastepisode]. These are created automatically using updates from the RSS feed for the podcast. For example 4 Geeks 4e Episode 07 – How to get started in D&D or BGShort-20101018.
- Links up to [rpgpodcast] (many to many; required for [rpgpodcastepisode])
- Links up to [rpgitem] (many to many; optional)
- Links up to [rpg] (many to many; optional)
- Links up to [rpggenre] (many to many; optional)
- Links to [rpgsetting] (many to many; optional)
- Links to [rpgseries] (many to many; optional)
- Links to [rpgdesigner] (many to many; optional)
[person] subtypes
[person] is a high-level data structure that can have multiple subtypes spanning all domains. So a single [person] entry could be listed as all of board game designer/artist and RPG designer/artist/producer (such as Steve Jackson (I) or Larry Elmore). This object type has two generic entries: (Uncredited), (Reader Contribution).
[rpgdesigner] - http://rpggeek.com/browse/rpgdesigner
- Any person that has written for an RPG book or an article in an RPG-related periodical is listed as an [rpgdesigner]. For example Steffan O'Sullivan or Clinton R. Nixon.
- Links down to [rpgitem] (many to many; required for [rpgitem])
- Links down to [rpgpodcastepisode] (many to many; optional)
- Links down to [rpgissue] (many to many; required for [rpgitem])
- Links down to [rpgissuearticle] (many to many; required for [rpgissuearticle])
[rpgartist] - http://rpggeek.com/browse/rpgartist
- Any person that has created art for an RPG book or an issue of an RPG-related periodical is listed as an [rpgartist]. For example Clyde Caldwell or Gerald Brom.
- Links down to [rpgitem] (many to many; required for [rpgitem])
- Links down to [rpgissue] (many to many; required for [rpgitem])
[rpgproducer] - http://rpggeek.com/browse/rpgproducer
- Any person that has helped edit or produce an RPG book or an issue of an RPG-related periodical is listed as an [rpgproducer]. For example Peter Crowther or Karen Dyke.
- Links down to [rpgitem] (many to many; required for [rpgitem])
- Links down to [rpgissue] (many to many; required for [rpgitem])
VideoGameGeek
To be completed.
|