2010-01-09 11 views
1

Je suis en train de configurer une base de données MySQL et je l'interrogerai avec PHP. Il est préférable de décomposer l'information en plusieurs tables et de sélectionner les requêtes sur chacune des tables; ou est-il préférable de mettre tous les éléments dans une table et de faire une seule requête de sélection?Configuration de base de données MySQL et sélection PHP

Par exemple:

Il tiendra des informations sur les voitures jusqu'à 7; ce qui signifierait que leur sera d'environ 50 colonnes ou plus.

Table_design 1 
---------------------- 
table_all 
    username 
    car1_make 
    car1_model 
    car1_year 
    car1_condition 
    car1_tires 
    car1_color 
    car2_make 
    car2_model 
    car2_year 
    car2_condition 
    car2_tires 
    car2_color 
---------------------- 

Table_design 2 
---------------------- 
table_1 
    username 
    car1_make 
    car1_model 
    car1_year 
    car1_condition 
    car1_tires 
    car1_color 

table_2 
    username 
    car2_make 
    car2_model 
    car2_year 
    car2_condition 
    car2_tires 
    car2_color 
---------------------- 

Répondre

3

Trois tables. De cette façon, vous n'êtes pas limité à la quantité d'informations que vous pouvez ajouter à une voiture. Et vous n'êtes pas limité au nombre de voitures auxquelles un utilisateur peut avoir accès.

Si vous avez besoin d'une feuille de calcul d'utilisateurs, interrogez le tableau users. Si vous avez besoin d'un inventaire de voitures, interrogez le tableau cars. Si vous avez besoin de savoir à quelle voiture sont associés les utilisateurs, interrogez le userscars.

Voir Database Normalization.

  • utilisateurs
    • ID utilisateur
    • utilisateur Prénom
    • utilisateur Nom Dernière
  • voitures
    • ID voiture
    • Car Make
    • Model Car
  • usercars
    • ID utilisateur
    • ID voiture
+0

Je n'aime pas l'utilisation de PK de substitution ici puisque les informations Make/Model sont assez statiques. Si vous êtes bloqué dessus, j'aurais au moins UNIQUE le Make + Model (qui est le vrai PK) pour empêcher que plus d'une entrée "car" du même Make + Model soit entrée. De cette façon, le contenu de la table sera réellement réutilisé plutôt que dupliqué. Je voudrais également ajouter une colonne YEAR à la table de la voiture et l'inclure dans le make + modèle UK. –

1

Ce que Jonathan a dit, bien que sa structure de table est beaucoup à beaucoup, ce ISN Ce n'est pas nécessaire à moins que plusieurs personnes puissent posséder la même voiture.

* users 
     o User ID 
     o User First Name 
     o User Last Name 
* cars 
     o Car ID 
     o User ID 
     o Car Make 
     o Car Model 

est plus logique et est plus facile à interroger.

+0

Sauf que la table des voitures n'est pas vraiment une voiture unique. Il s'agit en fait d'enregistrer un substitut pour le vrai PK de "Make and Model". Il est donc très probable qu'un même utilisateur ait plusieurs voitures du même modèle. –

Questions connexes