Création d'une base de jeux

Le sujet sur La liste des 20 m’a forcé à réfléchir au besoin d’une base de données sur les jeux. Ce que j’ai fait, même si c’est encore pour mon seul usage privé (environ 10k entrées pour tester)… pour l’instant. Mais plus j’avance et plus je suis gêné dans son utilisation : titres génériques, gammes, éditions, réimplémentations etc. sont un enfer (sans même parler des localisations).

Si des gens dans le coin auraient un peu d’expérience dans la construction de ce genre de base, je suis preneur de tout avis / conseil / directives parce que je franchis clairement mes connaissances en la matière.

A titre d’illustration, voici où j’en suis actuellement. Plus ou moins. Certains champs sont redondants ou uniquement là pour un futur éventuel usage (qui n’arrivera jamais évidement^^) ou expérimentaux le temps de voir ce qui fonctionne le mieux / plus simplement.

Pour info, je travaille avec Strapi (parce que ça simplifie beaucoup la vie).

Exemple d’une requête en recherche :
…/api/games?filters[slug][$contains]=brass&populate=*

{
  "data": [
    {
      "id": 8899,
      "documentId": "jm54vv4acadvmsc7b99chlux",
      "title": "Brass",
      "slug": "brass",
      "isActive": true,
      "isFeatured": true,
      "createdAt": "2025-07-12T12:34:39.228Z",
      "updatedAt": "2025-07-20T11:24:24.806Z",
      "publishedAt": "2025-07-20T11:24:25.061Z",
      "isExpansion": false,
      "gallery": null,
      "categories": [
        {
          "id": 785,
          "documentId": "pkmrv5szzhmjej2bw0spv3gf",
          "name": "Économique",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:32.008Z",
          "updatedAt": "2025-07-10T23:09:32.008Z",
          "publishedAt": "2025-07-10T23:09:32.007Z",
          "bggId": 1021
        },
        {
          "id": 1464,
          "documentId": "yggdfh0psh7ys1sjda2oyk2c",
          "name": "Industrie",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:10:04.633Z",
          "updatedAt": "2025-07-10T23:10:04.633Z",
          "publishedAt": "2025-07-10T23:10:04.632Z",
          "bggId": 1088
        },
        {
          "id": 2364,
          "documentId": "k9yn751mveso796pvwpzzqyl",
          "name": "Transport",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:10:53.341Z",
          "updatedAt": "2025-07-10T23:10:53.341Z",
          "publishedAt": "2025-07-10T23:10:53.340Z",
          "bggId": 1011
        },
        {
          "id": 381,
          "documentId": "yqfuewycy7zyvqloaecxsxd7",
          "name": "Manchester (Angleterre, Royaume-Uni)",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:08.737Z",
          "updatedAt": "2025-07-10T23:09:08.737Z",
          "publishedAt": "2025-07-10T23:09:08.736Z",
          "bggId": 18587
        },
        {
          "id": 617,
          "documentId": "tcipel4eco55qecqo1abko9n",
          "name": "Angleterre",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:20.666Z",
          "updatedAt": "2025-07-10T23:09:20.666Z",
          "publishedAt": "2025-07-10T23:09:20.665Z",
          "bggId": 14759
        },
        {
          "id": 759,
          "documentId": "rmu6z14uaalu1zes23ibllll",
          "name": "Apple App Store",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:31.913Z",
          "updatedAt": "2025-07-10T23:09:31.913Z",
          "publishedAt": "2025-07-10T23:09:31.908Z",
          "bggId": 104952
        },
        {
          "id": 777,
          "documentId": "o6buodfuj0ikf2re2k5aj1z4",
          "name": "Steam",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:31.981Z",
          "updatedAt": "2025-07-10T23:09:31.981Z",
          "publishedAt": "2025-07-10T23:09:31.977Z",
          "bggId": 77349
        },
        {
          "id": 1406,
          "documentId": "vkagx5q7jgb0hlsfqkmv9r9d",
          "name": "Révolution industrielle",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:10:04.436Z",
          "updatedAt": "2025-07-10T23:10:04.436Z",
          "publishedAt": "2025-07-10T23:10:04.435Z",
          "bggId": 50152
        },
        {
          "id": 1538,
          "documentId": "f40xecso6hyakpjxmna7zy1m",
          "name": "Hall of Fame BGG",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:10:13.780Z",
          "updatedAt": "2025-07-10T23:10:13.780Z",
          "publishedAt": "2025-07-10T23:10:13.779Z",
          "bggId": 109134
        }
      ],
      "mechanics": [
        {
          "id": 178,
          "documentId": "qw1meusuj7zsrx2fafyt9iq1",
          "name": "Gestion de main",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:58:59.893Z",
          "updatedAt": "2025-07-10T23:58:59.893Z",
          "publishedAt": "2025-07-10T23:58:59.987Z",
          "bggId": 2040
        },
        {
          "id": 187,
          "documentId": "zq2u4fshkpyj68zr0t8bvnvc",
          "name": "Revenus",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:58:59.997Z",
          "updatedAt": "2025-07-10T23:58:59.997Z",
          "publishedAt": "2025-07-10T23:59:00.052Z",
          "bggId": 2902
        },
        {
          "id": 213,
          "documentId": "gfi2efvgjcz9fi5u5k1ybw0z",
          "name": "Prêts",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:00.144Z",
          "updatedAt": "2025-07-10T23:59:00.144Z",
          "publishedAt": "2025-07-10T23:59:00.215Z",
          "bggId": 2904
        },
        {
          "id": 236,
          "documentId": "ak6p9kjbbmd7lskhd6x8zxyj",
          "name": "Marché",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:00.296Z",
          "updatedAt": "2025-07-10T23:59:00.296Z",
          "publishedAt": "2025-07-10T23:59:00.357Z",
          "bggId": 2900
        },
        {
          "id": 251,
          "documentId": "bir17pwirp4qo4gggecuq8kt",
          "name": "Construction de réseau/itinéraire",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:00.397Z",
          "updatedAt": "2025-07-10T23:59:00.397Z",
          "publishedAt": "2025-07-10T23:59:00.441Z",
          "bggId": 2081
        },
        {
          "id": 368,
          "documentId": "culouedsvkwh8j7pvwgzmo87",
          "name": "Arbres/Pistes technologiques",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:01.090Z",
          "updatedAt": "2025-07-10T23:59:01.090Z",
          "publishedAt": "2025-07-10T23:59:01.149Z",
          "bggId": 2849
        },
        {
          "id": 393,
          "documentId": "h4fp84n3zrxemluxogyakxgz",
          "name": "Ordre de tour : Basé sur les stats",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:01.303Z",
          "updatedAt": "2025-07-10T23:59:01.303Z",
          "publishedAt": "2025-07-10T23:59:01.381Z",
          "bggId": 2826
        }
      ],
      "basegame": [],
      "expansion": null,
      "artists": [],
      "designers": [
        {
          "id": 638,
          "documentId": "ad1hhh92cfbklsijne6h4wb9",
          "name": "Martin Wallace",
          "slug": null,
          "biography": null,
          "website": null,
          "createdAt": "2025-07-06T16:54:25.834Z",
          "updatedAt": "2025-07-06T16:54:25.834Z",
          "publishedAt": "2025-07-06T16:54:25.846Z",
          "bggId": 6
        }
      ],
      "Infos_de_base": {
        "id": 8551,
        "subtitle": null,
        "description": "",
        "shortDescription": null,
        "bggId": 28720,
        "year1stPublished": 2007
        },
      "infos_joueurs": {
        "id": 8539,
        "minPlayers": 2,
        "maxPlayers": 4,
        "bestPlayerCount": "4 joueurs",
        "soloMode": true,
        "soloModeType": "officiel",
        "minAge": 14,
        "suggestedNumOfPlayers": "2–4 joueurs",
        "interaction": null
        },
      "infos_temps_de_jeu": {
        "id": 8537,
        "duree_mini": 60,
        "duree_maxi": 120,
        "duree_estimee": 120,
        "mise_en_place": null,
        "notes": null
        },
      "infos_complexite": {
        "id": 8535,
        "complexity": null,
        "learningCurve": null,
        "strategicDepth": null,
        "luck": null,
        "bggWeight": 3.85
        },
      "infos_ratings": {
        "id": 8533,
        "bggRating": 7.96,
        "bggRank": 21,
        "lastUpdated": null
        },
      "infos_recompenses": null,
      "publishers": [],
      "editions": [
        {
          "id": 2,
          "documentId": "bcala3tzo2xvujjzauoghdiq",
          "slug": null,
          "editionType": "standard",
          "yearPublished": 2018,
          "minPlayers": 2,
          "maxPlayers": 4,
          "playingTime": 120,
          "minAge": 14,
          "boxDimensions": "30.0 x 30.0 x 5.5 cm",
          "weight": 2,
          "isbn": null,
          "ean": null,
          "msrp": null,
          "currency": null,
          "isAvailable": true,
          "discontinuedDate": null,
          "averageRating": null,
          "createdAt": "2025-07-20T11:15:53.522Z",
          "updatedAt": "2025-07-20T11:15:53.522Z",
          "publishedAt": "2025-07-20T11:15:53.567Z",
          "titre_edition": "Brass: Lancashire (retail)",
          "particularites": null,
          "langue": "Anglais",
          "principal": false
        },
        {
          "id": 4,
          "documentId": "bmlet80jyr7pssff0jxbdi7v",
          "slug": null,
          "editionType": "deluxe",
          "yearPublished": 2018,
          "minPlayers": 2,
          "maxPlayers": 4,
          "playingTime": null,
          "minAge": null,
          "boxDimensions": "30.0 x 30.0 x 7.5 cm",
          "weight": 2.9,
          "isbn": null,
          "ean": null,
          "msrp": null,
          "currency": null,
          "isAvailable": false,
          "discontinuedDate": 2018,
          "averageRating": null,
          "createdAt": "2025-07-20T11:17:55.995Z",
          "updatedAt": "2025-07-20T11:17:55.995Z",
          "publishedAt": "2025-07-20T11:17:56.050Z",
          "titre_edition": "Brass: Lancashire (Deluxe)",
          "particularites": "Kickstarter",
          "langue": "Anglais",
          "principal": false
        },
        {
          "id": 7,
          "documentId": "hc1r2ruefk5pnvllp03ibrar",
          "slug": null,
          "editionType": "standard",
          "yearPublished": 2019,
          "minPlayers": 2,
          "maxPlayers": 4,
          "playingTime": 120,
          "minAge": 14,
          "boxDimensions": "30.0 x 30.0 x 5.5 cm",
          "weight": null,
          "isbn": null,
          "ean": "3770001556741",
          "msrp": null,
          "currency": "EUR",
          "isAvailable": false,
          "discontinuedDate": null,
          "averageRating": null,
          "createdAt": "2025-07-20T11:21:50.240Z",
          "updatedAt": "2025-07-20T11:24:11.934Z",
          "publishedAt": "2025-07-20T11:24:12.022Z",
          "titre_edition": "Brass: Lancashire",
          "particularites": "Brass: Lancashire — first published as Brass — is an economic strategy game that tells the story of competing cotton entrepreneurs in Lancashire during the industrial revolution. You must develop, build and establish your industries and network so that you can capitalize on demand for iron, coal and cotton. The game is played over two halves: the canal phase and the rail phase. To win the game, score the most victory points (VPs), which are counted at the end of each phase. VPs are gained from your canals, rails, and established (flipped) industry tiles. Each round, players take turns according to the turn order track, receiving two actions to perform any of the following:


    Build an industry tile
    Build a rail or canal
    Develop an industry
    Sell cotton
    Take a loan


At the end of your turn, you replace the two cards you played with two more from the deck. Turn order is determined by how much money a player spent on the previous turn, the lowest spender going first. This turn order mechanism opens some strategic options for players going later in the turn order, allowing for the possibility of back-to-back turns.

After all the cards have been played the first time (with the deck size being adjusted for the number of players), the canal phase ends and a scoring round commences. After scoring, all canals and all of the lowest level industries are removed from the game, after which new cards are dealt and the rail phase begins. During this phase, players may now occupy more than one location in a city and double-connection builds (though expensive) are possible. At the end of the rail phase, another scoring round takes place, then a winner is crowned.

The cards limit where you can build your industries, sell cotton or build connections (though any card can be used to 'develop'). This leads to a strategic timing/storing of cards. Resources are common so that if you build a rail line (which requires coal) you have to use the coal from the nearest source, which may be an opponent's coal mine, which in turn gets that coal mine closer to scoring (i.e., being utilized).

Brass: Lancashire, the 2018 edition from Roxley Games, reboots the original Warfrog Games edition of Brass with new artwork and components, as well as a few rules changes:


     The virtual link rules between Birkenhead have been made optional.
     The three-player experience has been brought closer to the ideal experience of four players by shortening each half of the game by one round and tuning the deck and distant market tiles slightly to ensure a consistent experience.
     Two-player rules have been created and are playable without the need of an alternate board.
     The level 1 cotton mill is now worth 5 VP to make it slightly less terrible.


",
          "langue": "Français",
          "principal": true
        }
      ],
      "edition_principale": {
        "id": 7,
        "documentId": "hc1r2ruefk5pnvllp03ibrar",
        "slug": null,
        "editionType": "standard",
        "yearPublished": 2019,
        "minPlayers": 2,
        "maxPlayers": 4,
        "playingTime": 120,
        "minAge": 14,
        "boxDimensions": "30.0 x 30.0 x 5.5 cm",
        "weight": null,
        "isbn": null,
        "ean": "3770001556741",
        "msrp": null,
        "currency": "EUR",
        "isAvailable": false,
        "discontinuedDate": null,
        "averageRating": null,
        "createdAt": "2025-07-20T11:21:50.240Z",
        "updatedAt": "2025-07-20T11:24:11.934Z",
        "publishedAt": "2025-07-20T11:24:12.022Z",
        "titre_edition": "Brass: Lancashire",
        "particularites": "Brass: Lancashire — first published as Brass — is an economic strategy game that tells the story of competing cotton entrepreneurs in Lancashire during the industrial revolution. You must develop, build and establish your industries and network so that you can capitalize on demand for iron, coal and cotton. The game is played over two halves: the canal phase and the rail phase. To win the game, score the most victory points (VPs), which are counted at the end of each phase. VPs are gained from your canals, rails, and established (flipped) industry tiles. Each round, players take turns according to the turn order track, receiving two actions to perform any of the following:


    Build an industry tile
    Build a rail or canal
    Develop an industry
    Sell cotton
    Take a loan


At the end of your turn, you replace the two cards you played with two more from the deck. Turn order is determined by how much money a player spent on the previous turn, the lowest spender going first. This turn order mechanism opens some strategic options for players going later in the turn order, allowing for the possibility of back-to-back turns.

After all the cards have been played the first time (with the deck size being adjusted for the number of players), the canal phase ends and a scoring round commences. After scoring, all canals and all of the lowest level industries are removed from the game, after which new cards are dealt and the rail phase begins. During this phase, players may now occupy more than one location in a city and double-connection builds (though expensive) are possible. At the end of the rail phase, another scoring round takes place, then a winner is crowned.

The cards limit where you can build your industries, sell cotton or build connections (though any card can be used to 'develop'). This leads to a strategic timing/storing of cards. Resources are common so that if you build a rail line (which requires coal) you have to use the coal from the nearest source, which may be an opponent's coal mine, which in turn gets that coal mine closer to scoring (i.e., being utilized).

Brass: Lancashire, the 2018 edition from Roxley Games, reboots the original Warfrog Games edition of Brass with new artwork and components, as well as a few rules changes:


     The virtual link rules between Birkenhead have been made optional.
     The three-player experience has been brought closer to the ideal experience of four players by shortening each half of the game by one round and tuning the deck and distant market tiles slightly to ensure a consistent experience.
     Two-player rules have been created and are playable without the need of an alternate board.
     The level 1 cotton mill is now worth 5 VP to make it slightly less terrible.


",
        "langue": "Français",
        "principal": true
      }
    },
    {
      "id": 8914,
      "documentId": "kuvsq4isdph5icnpft4anw0v",
      "title": "Brass: Birmingham",
      "slug": "brass-birmingham",
      "isActive": true,
      "isFeatured": true,
      "createdAt": "2025-07-12T10:53:17.145Z",
      "updatedAt": "2025-07-20T11:35:44.605Z",
      "publishedAt": "2025-07-20T11:35:45.009Z",
      "isExpansion": false,
      "gallery": null,
      "categories": [
        {
          "id": 311,
          "documentId": "gfqxzdryk98h5yy0nol305xg",
          "name": "- Birmingham (Angleterre)",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:08.412Z",
          "updatedAt": "2025-07-10T23:09:08.412Z",
          "publishedAt": "2025-07-10T23:09:08.411Z",
          "bggId": 17519
        },
        {
          "id": 531,
          "documentId": "ixazxjc29oz93gltxpejmajq",
          "name": "Cartes multi-usages",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:20.286Z",
          "updatedAt": "2025-07-10T23:09:20.286Z",
          "publishedAt": "2025-07-10T23:09:20.285Z",
          "bggId": 65191
        },
        {
          "id": 617,
          "documentId": "tcipel4eco55qecqo1abko9n",
          "name": "Angleterre",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:20.666Z",
          "updatedAt": "2025-07-10T23:09:20.666Z",
          "publishedAt": "2025-07-10T23:09:20.665Z",
          "bggId": 14759
        },
        {
          "id": 777,
          "documentId": "o6buodfuj0ikf2re2k5aj1z4",
          "name": "Steam",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:31.981Z",
          "updatedAt": "2025-07-10T23:09:31.981Z",
          "publishedAt": "2025-07-10T23:09:31.977Z",
          "bggId": 77349
        },
        {
          "id": 785,
          "documentId": "pkmrv5szzhmjej2bw0spv3gf",
          "name": "Économique",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:32.008Z",
          "updatedAt": "2025-07-10T23:09:32.008Z",
          "publishedAt": "2025-07-10T23:09:32.007Z",
          "bggId": 1021
        },
        {
          "id": 822,
          "documentId": "jn2d2myk4kjbmmh43cdbkyry",
          "name": "Bière",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:09:32.146Z",
          "updatedAt": "2025-07-10T23:09:32.146Z",
          "publishedAt": "2025-07-10T23:09:32.145Z",
          "bggId": 26397
        },
        {
          "id": 1406,
          "documentId": "vkagx5q7jgb0hlsfqkmv9r9d",
          "name": "Révolution industrielle",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:10:04.436Z",
          "updatedAt": "2025-07-10T23:10:04.436Z",
          "publishedAt": "2025-07-10T23:10:04.435Z",
          "bggId": 50152
        },
        {
          "id": 1464,
          "documentId": "yggdfh0psh7ys1sjda2oyk2c",
          "name": "Industrie",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:10:04.633Z",
          "updatedAt": "2025-07-10T23:10:04.633Z",
          "publishedAt": "2025-07-10T23:10:04.632Z",
          "bggId": 1088
        },
        {
          "id": 2365,
          "documentId": "h0z9h64axi8rxphsw4nxmrs0",
          "name": "Trains",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:10:53.345Z",
          "updatedAt": "2025-07-10T23:10:53.345Z",
          "publishedAt": "2025-07-10T23:10:53.344Z",
          "bggId": 1034
        },
        {
          "id": 2364,
          "documentId": "k9yn751mveso796pvwpzzqyl",
          "name": "Transport",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:10:53.341Z",
          "updatedAt": "2025-07-10T23:10:53.341Z",
          "publishedAt": "2025-07-10T23:10:53.340Z",
          "bggId": 1011
        }
      ],
      "mechanics": [
        {
          "id": 114,
          "documentId": "nksz7mdy6jvf4m65qkduhbi1",
          "name": "Enchaînement",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:58:59.469Z",
          "updatedAt": "2025-07-10T23:58:59.469Z",
          "publishedAt": "2025-07-10T23:58:59.529Z",
          "bggId": 2956
        },
        {
          "id": 161,
          "documentId": "fr3ozbsvdsp3z1wllzeg7xk4",
          "name": "Bonus de fin de partie",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:58:59.834Z",
          "updatedAt": "2025-07-10T23:58:59.834Z",
          "publishedAt": "2025-07-10T23:58:59.896Z",
          "bggId": 2875
        },
        {
          "id": 178,
          "documentId": "qw1meusuj7zsrx2fafyt9iq1",
          "name": "Gestion de main",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:58:59.893Z",
          "updatedAt": "2025-07-10T23:58:59.893Z",
          "publishedAt": "2025-07-10T23:58:59.987Z",
          "bggId": 2040
        },
        {
          "id": 187,
          "documentId": "zq2u4fshkpyj68zr0t8bvnvc",
          "name": "Revenus",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:58:59.997Z",
          "updatedAt": "2025-07-10T23:58:59.997Z",
          "publishedAt": "2025-07-10T23:59:00.052Z",
          "bggId": 2902
        },
        {
          "id": 213,
          "documentId": "gfi2efvgjcz9fi5u5k1ybw0z",
          "name": "Prêts",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:00.144Z",
          "updatedAt": "2025-07-10T23:59:00.144Z",
          "publishedAt": "2025-07-10T23:59:00.215Z",
          "bggId": 2904
        },
        {
          "id": 236,
          "documentId": "ak6p9kjbbmd7lskhd6x8zxyj",
          "name": "Marché",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:00.296Z",
          "updatedAt": "2025-07-10T23:59:00.296Z",
          "publishedAt": "2025-07-10T23:59:00.357Z",
          "bggId": 2900
        },
        {
          "id": 242,
          "documentId": "h9b9jgl3jpehawp9b1wv7txi",
          "name": "Cartes multi-usages",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:00.323Z",
          "updatedAt": "2025-07-10T23:59:00.323Z",
          "publishedAt": "2025-07-10T23:59:00.380Z",
          "bggId": 3099
        },
        {
          "id": 251,
          "documentId": "bir17pwirp4qo4gggecuq8kt",
          "name": "Construction de réseau/itinéraire",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:00.397Z",
          "updatedAt": "2025-07-10T23:59:00.397Z",
          "publishedAt": "2025-07-10T23:59:00.441Z",
          "bggId": 2081
        },
        {
          "id": 254,
          "documentId": "xb8mpdi9ug65ca15r7fnwkl1",
          "name": "Propriété",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:00.419Z",
          "updatedAt": "2025-07-10T23:59:00.419Z",
          "publishedAt": "2025-07-10T23:59:00.465Z",
          "bggId": 2911
        },
        {
          "id": 368,
          "documentId": "culouedsvkwh8j7pvwgzmo87",
          "name": "Arbres/Pistes technologiques",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:01.090Z",
          "updatedAt": "2025-07-10T23:59:01.090Z",
          "publishedAt": "2025-07-10T23:59:01.149Z",
          "bggId": 2849
        },
        {
          "id": 388,
          "documentId": "a9s2yj12injhas5uqgso73ez",
          "name": "Placement de tuiles",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:01.263Z",
          "updatedAt": "2025-07-10T23:59:01.263Z",
          "publishedAt": "2025-07-10T23:59:01.319Z",
          "bggId": 2002
        },
        {
          "id": 393,
          "documentId": "h4fp84n3zrxemluxogyakxgz",
          "name": "Ordre de tour : Basé sur les stats",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:01.303Z",
          "updatedAt": "2025-07-10T23:59:01.303Z",
          "publishedAt": "2025-07-10T23:59:01.381Z",
          "bggId": 2826
        },
        {
          "id": 401,
          "documentId": "n7gdayyowl44w2tb3sh9yhtl",
          "name": "Configuration variable",
          "slug": null,
          "description": null,
          "createdAt": "2025-07-10T23:59:01.358Z",
          "updatedAt": "2025-07-10T23:59:01.358Z",
          "publishedAt": "2025-07-10T23:59:01.420Z",
          "bggId": 2897
        }
      ],
      "basegame": [],
      "expansion": null,
      "artists": [
        {
          "id": 13372,
          "documentId": "ozt320b4dbiy4tajex7fzr5w",
          "name": "Damien Mammoliti",
          "slug": null,
          "biography": null,
          "website": null,
          "bggId": 38179,
          "createdAt": "2025-07-09T23:28:38.585Z",
          "updatedAt": "2025-07-09T23:28:38.585Z",
          "publishedAt": "2025-07-09T23:28:38.645Z"
        },
        {
          "id": 13598,
          "documentId": "tmhv34e259u110qgm3oiqcf9",
          "name": "David Forest",
          "slug": null,
          "biography": null,
          "website": null,
          "bggId": 70568,
          "createdAt": "2025-07-09T23:28:48.377Z",
          "updatedAt": "2025-07-09T23:28:48.377Z",
          "publishedAt": "2025-07-09T23:28:48.444Z"
        },
        {
          "id": 14607,
          "documentId": "htqbcxuuhi79450tenxj50gj",
          "name": "Gavan Brown",
          "slug": null,
          "biography": null,
          "website": null,
          "bggId": 32887,
          "createdAt": "2025-07-09T23:29:11.941Z",
          "updatedAt": "2025-07-09T23:29:11.941Z",
          "publishedAt": "2025-07-09T23:29:12.008Z"
        },
        {
          "id": 14814,
          "documentId": "hku2u98j92wxxv3zkx9vgsh8",
          "name": "Gui Landgraf",
          "slug": null,
          "biography": null,
          "website": null,
          "bggId": 140907,
          "createdAt": "2025-07-09T23:29:24.002Z",
          "updatedAt": "2025-07-09T23:29:24.002Z",
          "publishedAt": "2025-07-09T23:29:24.073Z"
        },
        {
          "id": 16835,
          "documentId": "g2bjt0pyh4vfjz8ak8j78jhs",
          "name": "Lina Cossette",
          "slug": null,
          "biography": null,
          "website": null,
          "bggId": 70571,
          "createdAt": "2025-07-09T23:30:19.867Z",
          "updatedAt": "2025-07-09T23:30:19.867Z",
          "publishedAt": "2025-07-09T23:30:19.929Z"
        },
        {
          "id": 17532,
          "documentId": "zh3ty2vqzxbi58wrwz1j0p2p",
          "name": "Matt Tolman",
          "slug": null,
          "biography": null,
          "website": null,
          "bggId": 32943,
          "createdAt": "2025-07-09T23:30:41.187Z",
          "updatedAt": "2025-07-09T23:30:41.187Z",
          "publishedAt": "2025-07-09T23:30:41.258Z"
        }
      ],
      "designers": [
        {
          "id": 1421,
          "documentId": "yfq1ugkjpn9t4smg7xq0dyo5",
          "name": "Gavan Brown",
          "slug": null,
          "biography": null,
          "website": null,
          "createdAt": "2025-07-06T19:38:28.947Z",
          "updatedAt": "2025-07-06T19:38:28.947Z",
          "publishedAt": "2025-07-06T19:38:28.974Z",
          "bggId": 32887
        },
        {
          "id": 638,
          "documentId": "ad1hhh92cfbklsijne6h4wb9",
          "name": "Martin Wallace",
          "slug": null,
          "biography": null,
          "website": null,
          "createdAt": "2025-07-06T16:54:25.834Z",
          "updatedAt": "2025-07-06T16:54:25.834Z",
          "publishedAt": "2025-07-06T16:54:25.846Z",
          "bggId": 6
        },
        {
          "id": 1422,
          "documentId": "ug7nrq2qs14jce05fmm8u6et",
          "name": "Matt Tolman",
          "slug": null,
          "biography": null,
          "website": null,
          "createdAt": "2025-07-06T19:38:28.960Z",
          "updatedAt": "2025-07-06T19:38:28.960Z",
          "publishedAt": "2025-07-06T19:38:28.982Z",
          "bggId": 32943
        }
      ],
      "Infos_de_base": {
        "id": 8566,
        "subtitle": "Brass: Birmingham",
        "description": "Brass: Birmingham is an economic strategy game sequel to Martin Wallace's 2007 masterpiece, Brass. Brass: Birmingham tells the story of competing entrepreneurs in Birmingham during the industrial revolution between the years of 1770 and 1870.

It offers a very different story arc and experience from its predecessor. As in its predecessor, you must develop, build and establish your industries and network in an effort to exploit low or high market demands. The game is played over two halves: the canal era (years 1770-1830) and the rail era (years 1830-1870). To win the game, score the most VPs. VPs are counted at the end of each half for the canals, rails and established (flipped) industry tiles.

Each round, players take turns according to the turn order track, receiving two actions to perform any of the following actions (found in the original game):

1) Build - Pay required resources and place an industry tile.
2) Network - Add a rail / canal link, expanding your network.
3) Develop - Increase the VP value of an industry.
4) Sell - Sell your cotton, manufactured goods and pottery.
5) Loan - Take a £30 loan and reduce your income.

Brass: Birmingham also features a new sixth action:

6) Scout - Discard three cards and take a wild location and wild industry card. (This action replaces Double Action Build in original Brass.)

",
        "shortDescription": null,
        "bggId": 224517,
        "year1stPublished": 2018
      },
      "infos_joueurs": {
        "id": 8554,
        "minPlayers": 2,
        "maxPlayers": 4,
        "bestPlayerCount": "3–4 joueurs",
        "soloMode": true,
        "soloModeType": "officiel",
        "minAge": 14,
        "suggestedNumOfPlayers": "2–4 joueurs",
        "interaction": null
      },
      "infos_temps_de_jeu": {
        "id": 8552,
        "duree_mini": 60,
        "duree_maxi": 120,
        "duree_estimee": 120,
        "mise_en_place": null,
        "notes": null
      },
      "infos_complexite": {
        "id": 8550,
        "complexity": null,
        "learningCurve": null,
        "strategicDepth": null,
        "luck": null,
        "bggWeight": 3.87
      },
      "infos_ratings": {
        "id": 8548,
        "bggRating": 8.4,
        "bggRank": 1,
        "lastUpdated": null
      },
      "infos_recompenses": null,
      "publishers": [
        {
          "id": 1676,
          "documentId": "wzckii1sx19gwm5f075u929b",
          "name": "Funforge",
          "slug": null,
          "description": null,
          "website": null,
          "country": null,
          "foundedYear": null,
          "createdAt": "2025-07-09T23:48:57.582Z",
          "updatedAt": "2025-07-09T23:48:57.582Z",
          "publishedAt": "2025-07-09T23:48:57.638Z",
          "bggId": 8832
        },
        {
          "id": 3697,
          "documentId": "dgeyi31lpynpozw7u90110t5",
          "name": "Roxley",
          "slug": null,
          "description": null,
          "website": null,
          "country": null,
          "foundedYear": null,
          "createdAt": "2025-07-09T23:49:54.264Z",
          "updatedAt": "2025-07-09T23:49:54.264Z",
          "publishedAt": "2025-07-09T23:49:54.330Z",
          "bggId": 21765
        }
      ],
      "editions": [
        {
          "id": 9,
          "documentId": "tjhbklb25kpwl2rzxzqe5sxc",
          "slug": null,
          "editionType": "deluxe",
          "yearPublished": null,
          "minPlayers": 2,
          "maxPlayers": null,
          "playingTime": null,
          "minAge": null,
          "boxDimensions": "30.0 x 30.0 x 7.5 cm",
          "weight": 3,
          "isbn": null,
          "ean": null,
          "msrp": null,
          "currency": null,
          "isAvailable": true,
          "discontinuedDate": null,
          "averageRating": null,
          "createdAt": "2025-07-20T11:35:09.692Z",
          "updatedAt": "2025-07-20T11:35:09.692Z",
          "publishedAt": "2025-07-20T11:35:09.738Z",
          "titre_edition": "Brass: Birmingham (Deluxe Edition)",
          "particularites": "- Upgraded player mats\n- Foil box upgrade along the edges of the boxes.\n- Black chitboard tiles\n- Custom 2-piece modular VAC tray insert\n- Deluxe edition numbering\n- 70 clay style money chips",
          "langue": null,
          "principal": false
        }
      ],
      "edition_principale": null
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 25,
      "pageCount": 1,
      "total": 2
    }
  }
}```
6 « J'aime »

Alors je n’ai pas le temps de développer beaucoup pour le moment (je pourrais passer des jours sur un sujet pareil :grinning_face:), mais en vrac, avant d’y revenir plus longuement peut-être :

  • c’est pour quel usage exactement ?
  • pourquoi refaire quelque chose qui existe déjà chez BGG, Tric Trac, MyLudo… ? (BGG au moins a une API exploitable pour ce genre de trucs)
  • une mutualisation avec Tric Trac sur le sujet ne serait elle pas pertinente ?
  • pour le schéma de base, si tu fais la tienne, regarde ceux de BGG, TT pour voir ce qui existe, des cas auxquels tu n’aurais éventuellement pas pensé etc.
  • base relationnelle ou orientée document ? (pour des données bordéliques comme les jeux je partirais sur la seconde solution)
  • tu vises quel niveau d’exhaustivité (editions, langues…) ?

Ça c’est avant de parler des choix technos proprement dits. :wink:

10 « J'aime »

Pour avoir une base avec laquelle faire des trucs ? :wink:

Pour pouvoir faire des trucs à volonté ? L’API de BGG, elle est quand même chiante et limitée dans son usage. En plus de ne pas forcément faire ce que je peux vouloir lui demander (et de ne pas prioriser les VF). Myludo, je ne vais certainement pas chercher à exploiter leur travail : s’ils avaient souhaité mettre des API (ou la rendre publique), ils l’auraient fait.

C’est un peu mon souci : je ne sais pas. Pour l’instant, je suis parti sur une Postgres très basique avec Strapi (parce que je suis une buse et que Strapi simplifie énormément la création / gestion du bousin, liaisons, types, auth etc.). Et je constate avec « les 20 » que c’est totalement insuffisant pour des applications un peu intéressantes comme générer des listes, tops, recos etc. Ou associer des articles, discussions, avis, opinions (de façon automatique parce que sinon c’est un travail à temps plein). Donc j’ai du passer à un niveau sup avec games + editions qui devrait en gros résoudre le problème mais est quand même bien lourdingue (surtout quand il faudra ensuite faire des requêtes un peu complexes…

Tout n’étant pas cata, j’en resterai volontiers à VF + VA/VO. Je ne souhaite pas faire un BGG2 (de toute façon j’ai déjà les données de BGG^^)

Je vote pour utiliser le format MyLudo, tu extraies en CSV ton top 20 et on t’envoie les nôtres (en CSV aussi).
Si c’est pour du plus large, ça va être un boulot dingue de reprendre les champs qui t’intéressent d’un modèle BGG/MyLudo, pour au final devoir les remplir à la main ou presque.

Je comprends la tentation perfectionniste de vouloir faire le truc idéal selon ses propres besoins, mais on sait bien qu’à moins de le faire pour un besoin ponctuel et super limité en scope, on se retrouve avec qqch bien trop chronophage par rapport au bénéfice obtenu, et impossible à maintenir. Je dis ça sans connaître vraiment tes capacités techniques et ton temps dispo :winking_face_with_tongue:

1 « J'aime »

Je ne suis pas sûr d’avoir bien compris ton besoin Thierry, mais j’avais pas mal utilisé l’api BGG pour un projet perso, en stockant les données dans une base postgres.

Perso je trouve qu’un modèle relationnel se prête bien à ces données, j’avais donc les table suivantes : boardgames, expansions, categories, publishers, mechanics, rankings (qui me servait à stocker les valeurs au fil des semaines pour en visualiser l’évolution), designers, etc.

Le seul conseil que je pourrais donner c’est de se restreindre aux données qui nous intéressent vraiment, quitte à agrémenter plus tard. En évitant de stocker directement les json retournés par BGG (si tu restes en SQL j’entends)

Mais j’ai l’impression que ton problème concerne les différentes éditions, sujet que je n’ai pas directement traité, si ce n’est en stockant le nom dans toutes les langues.

Est-ce qu’on peut savoir (au pire en privé) le besoin réel ?
On a pas d’api public sur Myludo mais on a ptet moyen de faire quelque chose selon le besoin. :wink:

2 « J'aime »

Pour un truc aussi bordélique, moi je te conseillerais de partir sur une approche de type métabase générique.
En gros par exemple, tu ne lies pas directement un « data » à un « éditeur », mais un « item » à un « acteur du marché » via une « relation » de valeur « éditeur ». (tu peux rajouter des valeurs supplémentaires pour différencier les éditeurs de différents pays, etc.)
De même tu devrais lier un jeu à une extension via une « relation » de valeur « extension » (ainsi no problem pour les extensions valables pour plusieurs jeux genre « rise of Ix » pour les 2 « Dune Imperium »)
Pareil pour le matériel, ex: jeu-matériel(type=« carte »)-usage(label=« deck de base »)-dimension(x=« 63.5 »)-quantité(value=« 120 »)

Ton modèle ne comporte ainsi que des éléments de base : item, usage(« jeu », « extension », « goodie », « standalone », « deck de base », …), acteur (« Bruno Cathala », « Asmodée », …), action (« éditeur », « graphiste », « traducteur », « fabricant », …), scalaire (« dim x », « dim y », « dim z », « durée », « quantité »,… ), … Toute la logique relationnelle est ensuite dynamique.

Je ne sais pas si je suis clair, mais en gros tu fais porter la versatilité de l’information par des valeurs et non par des champs, ce qui t’évite de devoir modifier ton modèle sans arrêt.
Ce n’est pas le plus rapide au niveau requêtage, évidemment…

1 « J'aime »

je vois bien. C’est d’ailleurs ce qu’a fait BGG avec son xml2 (par opposition à sa v1).

Je n’ai juste jamais mis en oeuvre ce genre d’architecture. Et j’aurais aimé éviter^^… Mais c’est sans doute une bonne occasion d’apprendre. Je vais prendre un peu de docs chez des IAs pour voir en gros la complexité du bousin…

L’intérêt majeur est que ça te permet de déporter la complexité du modèle vers les interfaces (saisie et présentation) avec le curseur où tu veux.
D’un côté une base de donnée totalement générique pourrait ne comporter que 4 tables : (Data, Datatype, Relation, RelationType) : un humain peut difficilement comprendre les données brutes… De l’autre côté une base totalement figée où chaque élément et relation dans l’écosystème est matérialisé : si c’est bien fait le modèle permet de comprendre toute la logique d’un système au premier coup d’œil, mais c’est l’enfer à faire évoluer.

1 « J'aime »

Ce sont les bases de données type GraphQL ?

Bonjour.
Je suis certainement hors sujet.
De par mon expérience, je ferais ça sous format web (exemple Wordpress + Avada ou autre thème).
Cela permet de se concentrer sur le besoin, les fonctions, la forme et non le développement, et d’être à jour à chaque évolution d’environnement informatique (windows, langages, format des supports tels que mobiles, tablettes etc.).
Hormis le coût modique du thème (non obligatoire cela dit), les fonctionnalités sont quasi illimitées.
Cordialement.

Après réflexion, ça me semble méchamment complexe à mettre en oeuvre (et je ne parle même pas de garder efficace dans le temps!). Je profite de passer une journée à la maison pour tenter une petite xp avec une version plus hybride, en associant une structure classique avec ses infos généralement constantes et une table de relations (limitée à trois collections -Games, Acteurs, Concepts - pour simplifier).

C’est assez intéressant en effet. Je vois assez clairement les avantages et la simplicité à faire évoluer

Maintenant, bosser sur une interface, en partant sur un duo Nuxt - GraphQL qui me semble assez bien adapté…

De toutes façons, sans savoir exactement ce que tu veux en faire, à un moment tu vas tout refaire de zéro avec les connaissances acquises pendant la conception de ta première version. :wink:
(En même en le sachant exactement, une refonte de zéro aurait été probable à terme, les joies du dev !)

Par contre le secret pour les projets perso c’est d’aller au plus simple (sauf si tu veux en profiter pour te former), et dans cette optique je ne vois pas ce que GraphQL vient faire là dedans.

disons que j’ai quelques bases en graphQL
que c’est parfaitement adapté à Strapi et Nuxt
et que ça permet des requêtes quand même plus efficaces que d’autres API (genre Rest API, utilisé de base par Strapi, ça serait une galère sans nom avec des relations à associer à chaque requête)

Vous vous en doutez, l’été est passé et je n’ai rien glandé.

Mais c’est fini, plus d’enfants dans les pattes pour jouer toute la journée, et ça bouge (un peu)

(pour info, je teste une structure mixte avec 4 collections : jeu, acteur, concept, relation. C’est pas aussi open mais ça devrait avoir plus de chances d’aboutir^^)

6 « J'aime »

Deux semaines pour développer le script pour convertir les liaisons existantes en relations. Ne ris pas ! A mon rythme habituel, ça tient de l’exploit !!!

(enfin, en dev. Plus qu’à serrer les fesses pour la prod et compter une semaine pour corriger les trucs qui ne fonctionneront inévitablement pas en passant d’une SQLite locale à une postgres sur un VPS^^)

5 « J'aime »

Bon, j’ai du gérer la difficulté des multiples éditions et de leurs langues. Et de comment exploiter ça en une requête exploitable. Ma solution semble efficace

(Je vous laisse deviner^^)

{
  "data": {
    "originalPublisher": {
      "editeur": {
        "documentId": "b8tjlbkkoua2jpjmksp3io5g",
        "nom": "FRED Distribution, Inc."
      },
      "annee": 2005,
      "edition": {
        "documentId": "gtmhatj1wf7mygh2e3x7vnk7",
        "nom_edition": "FRED/Warfrog first edition",
        "type_edition": "standard",
        "reference": null
      }
    },
    "lastFrenchPublisher": {
      "editeur": {
        "documentId": "nwi9br8z8clsvrngpyfvx0mu",
        "nom": "Funforge"
      },
      "annee": 2019,
      "edition": {
        "documentId": "hlabhpunksf6xolzv0pocisk",
        "nom_edition": "Funforge French edition",
        "type_edition": "standard",
        "reference": null
      }
    },
    "otherFrenchPublishers": [
      {
        "editeur": {
          "documentId": "ibeglq0aiqek5dauiow52xak",
          "nom": "White Goblin Games"
        },
        "annee": 2010,
        "edition": {
          "documentId": "ov6fbwrlgdsv8zbl8djwnf8m",
          "nom_edition": "Dutch/French edition",
          "type_edition": "standard",
          "reference": null
        }
      },
      {
        "editeur": {
          "documentId": "ofk5q6qsmq8m34nf8rl3gw9c",
          "nom": "Eagle-Gryphon Games"
        },
        "annee": 2009,
        "edition": {
          "documentId": "c466j64a2qn5m62xrt7uolhf",
          "nom_edition": "FRED second edition, second printing",
          "type_edition": "standard",
          "reference": null
        }
      }
    ]
  }
}
1 « J'aime »

Un ID qui commence par « b8tjlbkkoua » ? C’est clairement Brass: Lancashire !

1 « J'aime »

et un pas de plus : gestion des éditions multilingues et/ou multiéditeurs. Plus une route vers une requête spécifiquement dédié aux éditions en français. Plus qu’à populate les éditions…

{
  "data": {
    "originalPublisher": {
      "editeurs": [
        {
          "documentId": "b8tjlbkkoua2jpjmksp3io5g",
          "nom": "FRED Distribution, Inc.",
          "type": "Société"
        },
        {
          "documentId": "lr8lfhgx1cci85aoh5toandl",
          "nom": "Warfrog Games",
          "type": "Société"
        }
      ],
      "annee": 2005,
      "edition": {
        "documentId": "gtmhatj1wf7mygh2e3x7vnk7",
        "nom_edition": "FRED/Warfrog first edition",
        "type_edition": "standard",
        "reference": null,
        "langues": [
          "de",
          "en",
          "fr"
        ]
      }
    },
    "lastFrenchPublisher": {
      "editeurs": [
        {
          "documentId": "nwi9br8z8clsvrngpyfvx0mu",
          "nom": "Funforge",
          "type": "Société"
        }
      ],
      "annee": 2019,
      "edition": {
        "documentId": "hlabhpunksf6xolzv0pocisk",
        "nom_edition": "Funforge French edition",
        "type_edition": "standard",
        "reference": null,
        "langues": [
          "fr"
        ]
      }
    },
    "otherFrenchPublishers": [
      {
        "editeurs": [
          {
            "documentId": "ibeglq0aiqek5dauiow52xak",
            "nom": "White Goblin Games",
            "type": "Société"
          }
        ],
        "annee": 2010,
        "edition": {
          "documentId": "ov6fbwrlgdsv8zbl8djwnf8m",
          "nom_edition": "Brass Dutch/French edition",
          "type_edition": "standard",
          "reference": null,
          "langues": [
            "fr",
            "nl"
          ]
        }
      },
      {
        "editeurs": [
          {
            "documentId": "ofk5q6qsmq8m34nf8rl3gw9c",
            "nom": "Eagle-Gryphon Games",
            "type": "Société"
          },
          {
            "documentId": "b8tjlbkkoua2jpjmksp3io5g",
            "nom": "FRED Distribution, Inc.",
            "type": "Société"
          }
        ],
        "annee": 2009,
        "edition": {
          "documentId": "c466j64a2qn5m62xrt7uolhf",
          "nom_edition": "Brass FRED second edition, second printing",
          "type_edition": "standard",
          "reference": null,
          "langues": [
            "en",
            "fr"
          ]
        }
      },
      {
        "editeurs": [
          {
            "documentId": "b8tjlbkkoua2jpjmksp3io5g",
            "nom": "FRED Distribution, Inc.",
            "type": "Société"
          },
          {
            "documentId": "lr8lfhgx1cci85aoh5toandl",
            "nom": "Warfrog Games",
            "type": "Société"
          }
        ],
        "annee": 2007,
        "edition": {
          "documentId": "r9jlhbmxez9esgpa0id2p2nf",
          "nom_edition": "Brass ‐ FRED/Warfrog first edition",
          "type_edition": "standard",
          "reference": null,
          "langues": [
            "en",
            "fr",
            "de"
          ]
        }
      },
      {
        "editeurs": [
          {
            "documentId": "b8tjlbkkoua2jpjmksp3io5g",
            "nom": "FRED Distribution, Inc.",
            "type": "Société"
          },
          {
            "documentId": "lr8lfhgx1cci85aoh5toandl",
            "nom": "Warfrog Games",
            "type": "Société"
          }
        ],
        "annee": 2005,
        "edition": {
          "documentId": "gtmhatj1wf7mygh2e3x7vnk7",
          "nom_edition": "FRED/Warfrog first edition",
          "type_edition": "standard",
          "reference": null,
          "langues": [
            "de",
            "en",
            "fr"
          ]
        }
      }
    ]
  }
}
1 « J'aime »

Il y a quelques années déjà, j’ai fait des tests un peu dans ce goût là sous neo4j qui est typé relationnel, j’ai trouvé ça assez rigolo et fun en terme de mise en place de Bdd, tu n’as pas la raideur d’une base Sql du coup c’est pas mal. Pour les jointures c’est un plaisir. Mais… Tu n’as pas la raideur d’une base sql. Donc si on est bordélique ça peut vite être l’enfer. Et du coup ça demande pas mal de réflexion sur ce qui est des attributs de nœuds versus de nouveaux nœuds. Et pour le coup ça gère super bien tout ce qui n’est pas standardisé en terme de relations (genre nombre d’auteurs variable, éditeurs multiples, etc)

Idem, j’ai l’impression qu’ au début c’était pas trop compliqué et pas cher, ce ça qui n’est plus le cas maintenant. Il y a encore des options gratuites quand même.

Edit : le lien vers un article (en plusieurs parties) que j’avais fait sur tric trac pour illustrer comment on peut décortiquer les choses pour transformer des relations ultra compliquées en succession de relations aux attributs variables :

Le topic créé à l’occasion :

J’ai re-regardé, j’ai quand même plus de 16000 lignes dans mon fichier qui répertorie toutes les données des cartes et qui m’a servi à faire la création de la base de donnée !

4 « J'aime »