Hello,

Je dois réaliser un système de stockage de moyens de paiement associé aux utilisateurs.
Je passe volontairement la partie cryptage des data pour le stockage, car ce n'est pas le sujet.

Mon problème est plutôt pour m'assurer d'un design de database cohérent.

Ce que je fais

J'ai 3 tables :

  • la table users (les utilisateurs)
  • la table paymentmethods (les 3 methodes de paiement possible)
  • la table de liaison paymentmethod_user qui associe 1 ou plusieurs mode de paiement aux utilisateurs
    
    Table users (la table des utilisateurs)
    id
    name
    email
    password

Table paymentmethods (la table qui stocke les 3 moyens de paiement)
id
type

(Cette table "paymentmethods" contient juste 3 entrées : les moyens de paiement possible)
1 virement
2 cheque
3 paypal

Table paymentmethod_user (la table de liaison entre les utilisateurs et les moyens de paiement associés)
id
user_id
paymentmethod_id
meta



### J'ai 2 questions

1/  Est-ce une que cette structure avec la table pivot est cohérente ou avez-vous rencontré ce genre problématique et une autre structure serait plus appropriée ? 

2/ Pour le moment le champ "meta" de la Table  paymentmethod_user peut contenir aussi bien :
- Un iban dans le cas d'un moyen de paiement de type virement
- un email dans le cas d'un moyen de paiement de type paypal
- une adresse postale dans le cas d'un moyen de paiement de type chèque

Est-ce que c'est une bonne façon de stocker des éléments différents dans une colonne ? 

Si vous voyez une autre façon de faire, je suis preneur :) 

### Merci de vos avis éclairés :)

2 réponses


Salut, je suppose que ta colonne "meta" prend ces données depuis un champ que l'utilisateur rempli, donc appriori la structure de tes tables est bonne. Maintenant la complexivité dépend de ce que tu cherches à faire de plus

Oui la colonne meta peut prendre en valeur 3 types de donneés provenant de 3 formulaires distincts :

  • la colonne meta peut prendre en valeur une adresse postale (si formulaire de règlement par cheque)
  • la colonne meta peut prendre en valeur une adresse email (si formulaire de règlement par paypal)
  • la colonne meta peut prendre en valeur un iban (si formulaire de reglement par virement)

Je reste pour le moment sur cette structure n'ayant pas trouver mieux :)

si d'autres retours intéressants sur la question je suis preneur :)