2011-01-11 8 views
0

Je voudrais développer un système, où l'utilisateur obtiendra les données dynamiquement (ce que je veux dire dynamique est, sans recharger les pages, en utilisant AJAX .. mais bon, peu importe).MYSQL - Conception simple de base de données

Ma situation est comme celle-ci. J'ai cette table, je l'ai appelé "joueur", dans cette table de joueur, je vais stocker les informations du joueur comme, nom du joueur, niveau, expérience, etc

Chaque joueur peut avoir des vêtements différents, à partir de hauts (chemises) , bas, chaussures, et coiffure, et chaque joueur peut avoir plus de 1 tops, fonds, chaussures etc.

Ce que je suis hésité ou pas très sur, est comment normalement stockez-vous les données? Ma conception actuelle est comme ceci:

Player Table 
=========================================================================================== 
id | name | (others player's info) |  wearing     | tops | bottoms 
=========================================================================================== 
    1 | player1 |       | top=1;bottom=2;shoes=5;hair=8 | 1,2,3| 7,2,3 


Tops Table 
===================== 
id | name | etc... 
===================== 
1 | t-shirt | ... 

Je ne sais pas si cette conception est bonne. Si vous êtes le concepteur de la base de données, comment concevez-vous la base de données? Ou comment vous allez les stocker?

Veuillez nous aviser. Merci

Répondre

0

En bref: au lieu de mettre la colonne « porter », vous devriez faire une table qui relie les 2 tables

Vous obtiendrez

players 
id name 
1 player1 

clotheTypes 
1 top 
2 bottom 

clothes 
id name type 
1 shirt1 1 
2 shirt2 1 
3 pants1 2 

wearing 
playerId ClotheId 
1  1 
1  2 

Mais s'il vous plaît (les joueurs et les vêtements.) , lisez l'article taht @badcat partagé!

edit: comme l'avait demandé, quelques conseils:

Vous ne voulez pas en général:

id name computer 
1 john work, laptop, desktop, oldcomputer 

Parce que vous qui devrait être dans une table séparée. Maintenant, vous pouvez ajouter, plus tard, la marque et la vitesse des ordinateurs: vous ne pouvez pas la façon dont vous le faites en ce moment.

Person 
id name 
1 john 

computer 
id name owner 
1 work  1 
2 laptop 1 
3 desktop 1 
.... 
+0

Merci pour le design. J'ai eu du mal à comprendre la normalisation. Je l'ai lu pendant une demi-journée: ( Y a-t-il des astuces supplémentaires dans la conception de base de données? (Comme comment faire avec le design comme le vôtre? Bien sûr, j'ai besoin de comprendre la normalisation au moins jusqu'au 3ème niveau) – sequelDesigner

+0

Les conseils de base seraient: Vous ne voulez pas de valeurs "séparées par des virgules" dans un champ -> qui devraient être dans une nouvelle table, et si vous voyez des valeurs doubles dans plusieurs lignes (par exemple nom, nom, adresse), dans 1 table – Nanne

+0

Thats signifie, je devrais enlever mes colonnes de sommets dans le "joueur" table et créer une table quelque chose comme "player_top" table pour stocker tops du joueur (chemises)? – sequelDesigner

0

On dirait que vous êtes nouveau à ce sujet.

S'il vous plaît lire cet article sur Wikipédia sur la normalisation de la base de données:

http://en.wikipedia.org/wiki/Database_normalization


Personnellement, je ne ferais pas comme dans l'exemple ci-dessus, parce que vous auriez à jour chaque table des joueurs temps, un T-Shirt est ajouté ou retiré.

+0

Oui, j'ai lu la normalisation jusqu'au 3ème niveau. Puis-je savoir, comment allez-vous concevoir pour mon cas ci-dessus? – sequelDesigner

+0

J'ai une question ici, vous avez dit: "vous devez mettre à jour la table des joueurs chaque fois qu'un T-Shirt est ajouté ou enlevé", mais chaque fois que l'utilisateur ajoute/enlève des vêtements, je dois mettre à jour un tableau. (Basé sur la réponse @nanne, j'ai encore besoin de mettre à jour la table "players_tops"), alors quelles sont les différences ?? – sequelDesigner

0

Vous devez créer un tables supplémentaires pour les vêtements, quelque chose comme ceci:

joueur

id_player //1 
name  //Jhon 
level  //6 
experience //13 

player_cloth

id_player //1 
id_clothe //5 

cloth_types

id_cloth // 5 
type  // hat 
description // very warm 

Une fois que vous avez créé les tables dont vous avez besoin de relier ces données, vous avez seulement besoin de la valeur id_player.

+0

Merci pour la réponse. Est-ce que votre design est similaire à Nanne? – sequelDesigner

+0

il a une table supplémentaire pour les types de vêtements, mais oui, je dirais que c'est similaire, vous devez avoir lu maintenant qu'il existe plusieurs niveaux de normalisation, c'est essentiellement la différence. – amosrivera

+0

Je vois. Je suis encore au milieu de la compréhension de la normalisation. Puis-je savoir, dans les pratiques, jusqu'à quel niveau dois-je normaliser dans la conception de la base de données? – sequelDesigner

Questions connexes