J'ai essayé de trouver un bon modèle de conception pour mapper les données contenues dans les bases de données relationnelles avec les objets métier que j'ai créés, mais je continue de frapper un mur.Problèmes de mappage relationnel objet: Suggestions requises
Tenir compte des tableaux suivants:
TYPE: typeid, description
USER: userid, username, usertypeid->TYPE.typeid, imageid->IMAGE.imageid
IMAGE: imageid, location, imagetypeid->TYPE.typeid
Je voudrais rassembler toutes les informations concernant un utilisateur spécifique. Créer une requête pour cela n'est pas trop difficile.
SELECT u.*, ut.*, i.*, it.* FROM user u
INNER JOIN type ut ON ut.typeid = u.usertypeid
INNER JOIN image i ON i.imageid = u.imageid
INNER JOIN type it ON it.typeid = i.imagetypeid
WHERE u.userid = @userid
Le problème est que les noms de champs entrent en collision et je suis obligé d'alias chaque champ unique qui sort de la main très rapidement.
Est-ce que quelqu'un a un modèle de conception décent pour ce genre de chose? J'ai envisagé de récupérer plusieurs résultats d'une seule procédure stockée, puis d'utiliser un ensemble de données pour parcourir chacun d'eux, mais je crains que certains problèmes de performances ne me mordent plus tard. Par exemple au lieu de la requête ci-dessus quelque chose comme:
SELECT u.*, t.* FROM user u
INNER JOIN type t ON t.typeid = u.usertypeid
WHERE u.userid = @userid;
SELECT i.*, t.* FROM image i
INNER JOIN type t ON t.typeid = i.imagetypeid
INNER JOIN user u ON u.imageid = i.imageid
WHERE u.userid = @userid;
Est-ce que cela ressemble à une solution décente? Quelqu'un peut-il prévoir des problèmes avec cette approche?
cette dernière solution semble mauvaise, simplement. Ne pensez-vous pas que l'aliasing est une bien meilleure façon de procéder? BTW, utilisez-vous vraiment un cadre ORM? –
Wot no ORM framework en cours d'utilisation? Dans quelle langue est-ce? –