2013-08-20 4 views
1

Je ne suis pas un grand expert dans le domaine des bases de données et MySQL en particulier - l'étude, donc j'ai un peu confus dans la terminologie. J'ai une organisation de base de données interne, qui a un nouveau travail. Un produit de table, des catégories et des tas de propriétés différentes. Les propriétés de ce tableau sont répétées plusieurs fois (c'est-à-dire non uniques). Chaque position - une seule rangée de la table.décomposition simple de la table MySQL

Il est nécessaire de le diviser en plusieurs petits (faire une décomposition) pour sélectionner un titre, une catégorie et des propriétés dans des tables séparées avec un contenu unique.

Très probablement, il devrait être clair ce que je veux, mais toujours donner une structure.

1. La structure d'une base de données existante

PRINCIPAL TABLE

id int (10) unsigned NOT NULL AUTO_INCREMENT - (the unique ID of the position of the goods) 
prod_name varchar (255) NOT NULL - the name of the position (non-unique) 
prod_cat varchar (64) NOT NULL - the name of the category (non-unique) 
prod_prop01 varchar (64) NOT NULL - name svoystva1 (non-unique) 
prod_prop02 varchar (64) NOT NULL - name svoystva2 (non-unique) 

2. Je voudrais obtenir cette structure comme

TABLEAU PRINCIPAL

id int (10) unsigned NOT NULL AUTO_INCREMENT - (the unique ID of the position of the goods) 
prod_name int (10) - to the entry ID (unique) 
prod_cat int (10) - PH category (unique) 
prod_prop01 int (10) - Foreign svoystva1 (unique) 
prod_prop02 int (10) - Foreign svoystva2 (unique) 

TABLE DES POSITIONS NOMS

id int (10) unsigned NOT NULL AUTO_INCREMENT - (unique ID names) 
name varchar (64) NOT NULL - the name of the position (unikalnoe!) 

Et même pour la table - catégorie Prop01 et Prop02.

Cela peut-il être fait seulement avec l'aide de MySQL? Sinon, alors dites-moi un algorithme général pour résoudre ce problème. Merci pour votre attention à cette tâche simple.

Répondre

0

Si je comprends bien, vous aurez besoin de faire quelque chose comme ceci:

  1. Ajouter les nouvelles colonnes (en utilisant différents noms)
  2. les nouvelles colonnes POPULATE et tables en fonction de vos valeurs actuelles
  3. Suppression des anciennes colonnes
  4. Renommez les nouvelles colonnes pour qu'elles correspondent aux anciens noms. INSERER SELECT DISTINCT vous sera également utile.
+0

Recherchez INSERT dans les documents MySQL et trouvez la variante qui fonctionne avec SELECT. SELECT DISTINCT trouve des enregistrements uniques. – Paul

+0

4. ne supprimez pas les colonnes, mais faites-les lier aux nouvelles tables de base de données. – coderus