2010-10-21 4 views
2

Je travaille sur un programme utilisant une base de données SQL (j'utilise SQLite). Ce que mon programme n'est la suivante:Comment éviter la redondance des noms de colonnes dans les bases de données SQL?

  1. Crée les tables de la base de données si elles n'existent pas (au démarrage)
  2. exécute des requêtes SQL (SELECT, UPDATE, DELETE) - décidé par l'utilisateur de la interface

Ce que j'ai vu faire ceci est qu'il y a un lot de redondance. Je donne le nom des colonnes quand je crée les tables et aussi quand je mets à jour ou insère des informations dans la table.

CREATE TABLE USERS (
USER_ID, 
NAME, 
ADDRESS); 

UPDATE USERS (
NAME='John Smith' 
WHERE USER_ID='1' 
); 

Cela peut être frustrant quand traiter avec plus de 3 ou 4 tables et des erreurs peuvent se produire si je le nom mal orthographié d'une colonne.

Je voudrais savoir s'il y a un concepteur capable de créer/générer ces requêtes SQL en donnant juste quelques spécifications sur la description de la table.

Merci pour toute suggestion,

Iulian

PS: Le code est écrit en Java, mais je dois également être en mesure d'accéder au code d'un programme de ligne de commande C/C++.

+0

Je ne suis pas sûr du type de solution que vous imaginez. Vous devez spécifier tous les noms de colonne lorsque vous créez la table. Vous devez spécifier des noms de colonne spécifiques lorsque vous créez une requête (sinon, comment pourriez-vous spécifier ce que vous voulez que la condition de requête soit?). Je suppose que vous pourriez stocker tous les noms dans une sorte de carte, mais alors vos requêtes finiraient comme '" UPDATE USERS ("+ nom [0] +" WHERE "+ nom [1] +" = '1'); La structure de ces tables est-elle dynamique (ie peut-elle varier au moment de l'exécution, ou est-elle connue à la compilation?) –

Répondre

3

C'est l'idée de base derrière un ORM tel que ActiveRecord, hibernate de Ruby on Rails et des technologies semblables. Fondamentalement, vous définissez la configuration pour une table - ou utilisez une convention de nommage standard - et le framework générera vos requêtes CRUD (INSERT/SELECT/UPDATE/DELETE) pour vous.

Questions connexes