IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Stocker des données complexes dans la base de données


Sujet :

C#

  1. #1
    Futur Membre du Club
    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 : 5
    Points
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 368
    Points
    2 368
    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 habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Points : 179
    Points
    179
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Futur Membre du Club
    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 : 5
    Points
    5
    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 émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 368
    Points
    2 368
    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 confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    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
    Futur Membre du Club
    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 : 5
    Points
    5
    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
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Livre (Id,Titre,Id_Auteur)
    Auteur (Id,Nom,Prenom)
    Exemple de Record dans ta DB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Futur Membre du Club
    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 : 5
    Points
    5
    Par défaut
    merci Benoit c'est ce que je voulais, là j'ai compris

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/09/2011, 23h07
  2. Liste des tables existantes dans une base de données
    Par Lorenzole+bo dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/11/2007, 20h15
  3. [MySQL] Probleme d'affichage des infos contenues dans la base de données
    Par DonKnacki dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/11/2006, 16h19
  4. [Conception] Stocker des fichiers multimédia dans une base de données
    Par haifa84 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/03/2006, 17h47
  5. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo