Mes clients utilisent une des opérations suivantes lors de leur inscription à ma demande:question de modélisation des données
- Foo API (nécessite un "auth_key", "mot de passe", "email ")
- API Acme (nécessite un" secure_code " "nom d'utilisateur"," mot de passe ")
- Bar API (nécessite un" xyz_code "" pass_key «)
(faux noms, et 15 plus omis pour simplifier)
I Je préférerais ne pas avoir 10-15 tables dans ma base de données juste pour les différentes options d'intégration d'API que je propose (en particulier quand elles sont toutes pour la même chose et qu'elles choisissent simplement 1 dans la liste complète).
Ma solution était la suivante:
Faire une table api_configuration
avec une colonne appelée api_name
qui contient un code pour une API spécifique (par exemple "foo_api"
)
Faire une table appelée credentials_attribute
avec une clé étrangère retour à api_configuration
, une colonne appelée name
et une colonne appelée value
.
Ensuite, je construis une interface utilisateur pour choisir une API. S'ils choisissent l'API Acme, ils demanderont un "code_sécurisé", un "nom d'utilisateur" et un "mot de passe", et créeront une ligne au credentials_attribute
pour chacune des paires nom/valeur.
Sur mon modèle ORM pour api_configuration
Je peux faire une méthode pour rechercher des valeurs credentials_attribute
basées sur le courant api_name
.
Cette solution vous semble-t-elle correcte ou existe-t-il un autre moyen de le faire si vous deviez modéliser une solution à ce problème? S'il vous plaît expliquer votre raisonnement ainsi (ie, mieux pour la performance, etc)
ça sonne bien, mais ne pourriez-vous pas créer une seule table? Nom d'utilisateur/email est la même chose (bien, vous pourriez le représenter de cette façon)? – RPM1984
@ RPM1984 - Je pourrais. Je voulais juste des opinions sur d'autres façons (comme celle que vous avez mentionnée). Je penche en partie vers une version non-plate, ce qui me permet plus tard d'utiliser plus d'une API, mais je l'ai laissé de côté parce que je ne voulais pas biaiser les réponses des gens en fonction de quelque chose qui n'est pas problème pour le moment. – orokusaki
La discussion de stackoverflow ci-dessous parle des avantages et des inconvénients des différentes approches ORM. Même si vous ne posez pas de question spécifique sur ORM, beaucoup de commentaires seront toujours applicables, car ils comparent les approches à table unique et les approches à tables multiples. http://stackoverflow.com/questions/3413459/designing-sql-database-to-represent-oo-class-hierarchy/3427434#3427434 – mikemanne