PHP Organisation base de donnée

Inscrit
12 Octobre 2016
Messages
11
Reactions
0
#1
Bonjour,

Je suis actuellement sur un projet personnel en rapport avec Dofus, qui je pense restera en local, mais là n'est pas le sujet.

Je voulais savoir la meilleur manière d'organiser sa base de donnée, donc les équipements, les descriptions, les jets, les panoplies et leurs bonus etc..
Et peut-être par la suite un système de stuff.

Je voulais donc savoir si quelqu'un ici c'est déjà poser la quetion ou non.

J'ai vu qu’auparavant à la 1.29 tout était dans une et même table sous formé de dés (les jets) mais le problème c'est qu'il fallait traiter les données avant de renvoyer un rendu au client.

J'avais donc penser à créer une table équipements avec simplement les principales informations telles que le niveau le nom l'image, et créer un nouvelle table avec les jets de tous les items, mais j'ai peur que cette table soit trop grosses vu la quantité de d'équipements/armes et donc le nombre de stats...

Qu'en pensez-vous ?

Merci d'avance.
 
Inscrit
2 Juin 2016
Messages
82
Reactions
3
#2
https://fr.wikipedia.org/wiki/Base_de_données_relationnelle

Si besoin, voir alternatives NoSQL (Redis, MongoDB, Neo4j)

Avant de vouloir prétendre faire une base de données, il faut connaitre le modèle relationnel. UML t'aideras peut-être à modéliser.

btw:
si tu comptes utiliser MySQL, je te propose d'arrêter tout de suite ton projet.
 
Dernière édition:

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
327
Reactions
8
#3
La meilleure méthode pour construire une base de donnée est la méthode MERISE. Bien respecter la cardinalité, ne stocker qu'une seule et unique valeur par colonne sont les règles de base.

Par exemple : On décompose une adresse par le numéro, nom, type de voie, code postal et ville).
Concernant les dates, attention à ne pas se tromper, si la valeur affiché dans un champ date est composé du mois, du jour, etc, il n'y a en réalité qu'une valeur enregistrée, ce qu'on appelle le timestamp, qui représente le temps en seconde depuis le 1er janvier 1970. La valeur affichée sous forme de date habituelle n'est qu'un formatage du timestamp pour que l'utilisateur puisse facilement la lire.
Selon la cardinalité, des tables de jointures peuvent être utilisés.

Pour finir, il y a possibilité d'abstraire la base de donnée avec un framework ORM. Celui ci va s'occuper de traduire les objets en tables et de toute les opérations relationnelles. Un tel framework implémente normalement le pattern DAO qui permet d'utiliser n'importe qu'elle base de donnée si elle est implémentée et d'en changer avec une facilité déconcertante sans modifier une seule ligne de code. A part si on utilise des fonctionnalitées propre à une base de donnée. (Ce qui est à évité)
 
Inscrit
12 Octobre 2016
Messages
11
Reactions
0
#4
Dans ma deuxième proposition, oui j'utiliserai que des relations. De plus le site sera fait sous symfony donc oui sous framework ORM. Mais j'ai peur au vu du nombre de relation qu'il va y avoir sur une même page :/
 
Inscrit
27 Juin 2012
Messages
238
Reactions
0
#5
Si tes recherches se font sur les index des tables, les tables auront beau être très volumineuses, cela ira assez vite.
Dans mon boulot, des tables contenant des centaines de millions d'enregistrements sont consultés à une vitesse folle (quelques ms) donc ne t'en fait pas.
Après c'est sur que l'on a pas les même infrastructures, mais si ton projet à pour but de rester en local, tu pourras attendre une seconde sans problème je pense :)
 
Inscrit
12 Octobre 2016
Messages
11
Reactions
0
#6
Bonjour Neewd,

D'accord, je comprends. Une autre petite question alors, est ce que créer plusieurs index sur une même table est une mauvaise chose ? Car la plus part de mes requête se feront sur l'id et sur une autre colonne.

Après le problème n'est pas que la table soit énorme mais plutôt sur le nombre de requêtes pour simplement un objet.

Par exemple sur une page je vais afficher 20 objets dont chacun 8 statistiques et 8 ressources pour la créer. Tout ça avec des jointures pour aller rechercher toutes les données.
 
Inscrit
25 Février 2012
Messages
178
Reactions
3
#7
UML est plutôt pour POO, MERISE est faite pour ça (BDD)
 
Inscrit
2 Juin 2016
Messages
82
Reactions
3
#8
UML est très utilisé dans la conception de base de données :vicieux:
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#10
MySql est l'un des pire sgbd, si ce n'est le pire
 
Inscrit
18 Février 2015
Messages
228
Reactions
7
#11

Arth

Contributeur
Inscrit
28 Aout 2016
Messages
80
Reactions
3
#12
UML peut être utilisé pour organiser une DB sql, d'ailleurs certains outil de gestion de base de données offres une vue de ta base de données sous cette forme. Tu as juste à chercher "uml sql" dans Google pour voir des exemples, ça permet de bien visualiser les relations entre les tables.

MySQL n'est certainement pas le SGBDR le plus efficace mais il a l'avantage d'être gratuit et disponible sur pratiquement tous les hébergeurs. C'est donc pas un bon choix technologique, mais c'est un bon choix économique et de déploiement.
 
Inscrit
5 Novembre 2016
Messages
56
Reactions
2
#13
UML est très utilisé dans la conception de base de données :vicieux:
:o, comment ca, UML n'est pas fait pour BDD, enfin je pense, UML est fait pour la conception logicielle + besoins, Or que MERISE est fait pour la conception DBB, tu pourras jamais trouver une traduction de MPD,MLD,MRD, MCD, MCT ... en UML
enfin je te conseil d'utiliser Prosgresql d'après les bench,
je te conseil pas d'utiliser Oracle XE (même si c'est le meilleur SGBDR pour moi) vu que tu peux pas dépasser 4GB DD, 1GB RAM ... car c'est une version gratuite d'Oracle
 
Inscrit
2 Juin 2016
Messages
82
Reactions
3
#14
:o, comment ca, UML n'est pas fait pour BDD, enfin je pense, UML est fait pour la conception logicielle + besoins, Or que MERISE est fait pour la conception DBB, tu pourras jamais trouver une traduction de MPD,MLD,MRD, MCD, MCT ... en UML
enfin je te conseil d'utiliser Prosgresql d'après les bench,
je te conseil pas d'utiliser Oracle XE (même si c'est le meilleur SGBDR pour moi) vu que tu peux pas dépasser 4GB DD, 1GB RAM ... car c'est une version gratuite d'Oracle
Salut torrent d'inepties.

UML est utilisé comme outils de modélisation pour les bases de données oui, lorsqu'on utilise le modèle relationnel (comprendre: SQL). Pour preuve : les ORM sont utilisés pour faire la correspondance objet <-> sql, au même titre que UML est utilisé pour (re)présenter la programmation orientée objet.

S'il te plait, n'utilise pas les benchs pour mettre en avant une techno prioritaire avant une autre. N'utilise jamais Oracle sous version "gratuite", c'est trop limité. Bref, le meilleur choix des bases de données actuel est (googlez pour les sources)

SQL: SQL Server (MS), Oracle (entreprise éponyme), PostgreSQL (libre)
NoSQL: les mastodontes (redis, mongodb, neo4j)

A bon entendeur
 

Labo

Membre Actif
Inscrit
16 Aout 2013
Messages
799
Reactions
15
#15
Pour ma part, je pense que c'est stupide de se poser la question, ils se valent plus ou moins, ce n'est qu'une excuse pour perdre du temps au lieu de commencer à bosser avec l'un d'entre eux, mais voilà, les benchmarks sont assez explicites : http://nghenglim.github.io/PostgreSQL-9.5.0-vs-MariaDB-10.1.11-vs-MySQL-5.7.0-year-2016/?time=1
(même si ne ne connais pas suffisamment les différentes architectures pour comprendre pourquoi MySQL est aussi lent, et si une commande plus optimisée n'existe pas)
 
Haut Bas