2011-11-24 3 views
0

Je voudrais créer un moyen pour un utilisateur de créer une nouvelle table au backoffice. Pourquoi ça?Comment générer une nouvelle table, modifier un schéma dans un script dans Django? ou un assistant

L'application que je construis a beaucoup d'articles mais chaque article a des attributs différents. Un article peut donc appartenir à un groupe ayant les mêmes attributs. Donc, il pourrait être:

table: generated_table_screens 
-------------------- 
|size: integer  
|size_label: string = "size" 
|article_id: integer 


table: generated_table_mouses 
--------------------- 
|optic_val: integer 
|optic_val_label: string = "optic value" 
|article_id: integer 


table: articles 
-------------------- 
|id 
|code 
|description 
|price 

Je dois choisir entre cela et EAV. Quels sont les inconvénients et les avantages? et comment pourrais-je le faire dans Django, et traiter les "generated_table_mouses" par exemple avec un modèle? parce que le modèle est pas créé ...

+0

L'approche EAV aurait du sens pour une base de données SQL standard puisque le modèle est bien connu et documenté et l'autre option que vous suggérez est vague et rend la vie difficile. D'autres alternatives viables seraient NoSQL je suppose. –

+0

Je pense que je ne peux pas utiliser un noSQL db. Mais la vitesse avec EAV est très lente, d'après ce que j'ai lu à cause de plusieurs jointures par rangée. Dans mon cas, je devrais interroger environ 100 éléments et chaque élément a une moyenne de 6 attributs. –

+0

Quel est votre argument contre noSQL? –

Répondre

2

Vous devriez probablement regarder dans une base de données orientée document comme MongoDB ou CouchDB à cette fin ... Il y a une branche de django appelé django-nonrel qui prend spécifiquement en charge les bases de données NoSQL.

Questions connexes