Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1

    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 12
    Points : -1
    Points
    -1

    Par défaut Stocker des données complexes dans la base de données

    je voulais stocker des données de type complexe (classe), quelqu'un à une idée comment quel type dois-je données au colonne dans la table (colonne Tuteur dans l'exemple )???, et est-ce que je dois stocker chaque objet séparément ???

    mon code ça ressemble a ça :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Class Livre
    {
          public String Titre {get; set;}
          public T_Autheur Autheur {get; Set;}
    }
     
    public Class T_Autheur 
    {
          public String Nom {get; set;}
          public String Prenom{get; set;}
    }
    merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro Gilles Vino
    Software Developer
    Inscrit en
    mars 2008
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles Vino
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : mars 2008
    Messages : 1 477
    Points : 2 268
    Points
    2 268

    Par défaut

    Poses plutot cette question dans le forum base de données.

    Le type "varchar(max)" devrait te suffire (SQL Server).
    Tu peux aussi jeter un oeil au type "blob".

  3. #3
    Membre régulier
    Homme Profil pro Fabien
    Développeur .NET
    Inscrit en
    juin 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabien
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : juin 2012
    Messages : 61
    Points : 79
    Points
    79

    Par défaut

    Hello,

    C'est plutot un problème de SGBD mais bon ^^.

    Les langages de gestion de base de données pas magique et chaque champ ne peut être qu'un type basique connu du SGBD que tu utilises.

    Dans ton cas tu devras crée 2 tables.

    Une table auteur avec comme champ Nom et Prénom en Varchar, plus un identifiant pour faire les choses bien.
    Une table Livre avec un identifiant aussi, un varchar Titre et une clé étrangère référençant l'auteur de la table Auteur.

    Pour Sql server ça donnerait un truc du genre :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE LIVRE
    (ID_Livre integer primary key,
    Titre varchar(255),
    Auteur_ID integer references AUTEUR(ID_Auteur));
     
    CREATE TABLE AUTEUR
    (ID_Auteur integer primary key,
    Nom varchar(255),
    Prénom varchar(255));
    Cdlt,
    MvK
    Les questions ne sont pas obligées d'avoir du sens. Mais les réponses, si.
    Terry Pratchett (Procrastination)

  4. #4

    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 12
    Points : -1
    Points
    -1

    Par défaut

    si j'ai bien compris, dans ce cas la colonne Auteur dans la table Livre va stocker le nom et le prénom de l'auteur??

  5. #5
    Membre Expert

    Homme Profil pro Gilles Vino
    Software Developer
    Inscrit en
    mars 2008
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles Vino
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : mars 2008
    Messages : 1 477
    Points : 2 268
    Points
    2 268

    Par défaut

    Citation Envoyé par danoi18 Voir le message
    si j'ai bien compris, dans ce cas la colonne Auteur dans la table Livre va stocker le nom et le prénom de l'auteur??
    Veux-tu enregistrer de multuiples classes C# comme moyen de sauvegarde dans ta base de données ou bien n'as tu que ces 2 classes et prévois-tu d'exploiter les informations associées aux classes?

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : juin 2002
    Messages : 311
    Points : 410
    Points
    410

    Par défaut

    Si tu veux pouvoir stocker des représentations d'objects complexes sans avoir à constamment modifier ta base de données, il faut faire appel à un support de représentation générique comme JSON ou XML.

    Personnellement, j'irais avec JSON.

    CODE [=>Sérialisation] JSON [=>SQL] nvarchar(MAX)

    et vice versa

    C'est pas ce qui est deplus efficace mais en développement logiciel, il faut parfois sacrifier la performance pour la flexibilité. Alors si la performance n'est pas un problème dans ton système, vas-y avec un système générique.

  7. #7

    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 12
    Points : -1
    Points
    -1

    Par défaut

    Exactement 'alex_vino' j'ai multiple classes en C# reliée entre aux avec des instances de ces classes je récupère des données et je les stockes dans la base, certain de ces classes son des types de propriétés et je trouve pas comment stocker ces propriétés de type complexes, es ce que je dois mettre cette propriété comme clés étrangère qui me permet de récupérer les données d'un enregistrement??
    merci pr d'avance

  8. #8
    Expert Confirmé
    Homme Profil pro Benoît
    Inscrit en
    février 2003
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Nom : Homme Benoît
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : février 2003
    Messages : 1 722
    Points : 2 553
    Points
    2 553

    Par défaut

    Citation Envoyé par danoi18 Voir le message
    Exactement 'alex_vino' j'ai multiple classes en C# reliée entre aux avec des instances de ces classes je récupère des données et je les stockes dans la base, certain de ces classes son des types de propriétés et je trouve pas comment stocker ces propriétés de type complexes, es ce que je dois mettre cette propriété comme clés étrangère qui me permet de récupérer les données d'un enregistrement??
    merci pr d'avance
    Tu devrais regarder comment modéliser une base de données.
    Sinon tu auras les tables :
    Code :
    1
    2
    Livre (Id,Titre,Id_Auteur)
    Auteur (Id,Nom,Prenom)
    Exemple de Record dans ta DB :
    Code :
    1
    2
    Livre "1,Germinal, 1", "2,Rhinocéros,2","3,La Bête humaine,1"
    Auteur "1, Zola, Emile", "2, Ionesco,Eugène"
    Dans ta classes Livre et Auteur tu dois rajouter les champs Id.
    Pour les références, tu as deux possiblité:
    Code :
    1
    2
    -Livre.Autheur.Id 
    -Livre.IdAutheur
    la 2eme solution permet de faire du lazy load.
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  9. #9

    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 12
    Points : -1
    Points
    -1

    Par défaut

    merci Benoit c'est ce que je voulais, là j'ai compris

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •