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

PL/SQL Oracle Discussion :

Procédure éliminer attributs superflus dans dépendance fonctionnelle


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut Procédure éliminer attributs superflus dans dépendance fonctionnelle
    Bonsoir tout le monde,
    je suis débutante en sql et j'ai un projet a faire en sql dynamique j'ai pas su résoudre le probléme : on veut écrire une procédure qui élimine les attributs superflus dans une dépendance fonctionnelle
    voila ce que j'ai fait mais je pense que ce n'est pas correct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    create or replace procedure Eliminer_sf(f in number) as
    V_idcur integer;
    v_selectcmd varchar2(100);
    v_ndf f.ndf%type;
    v_ag f.ag%type;
    v_ad f.ad%type;
    s number;
     
    begin
     
    --ouverture du cursseur
    v_idcur :=DBMS_SQL.OPEN_CURSOR;
     
    --construction de la requéte
    V_selectcmd := 'select v_ndf, v_ag, v_ad from f';
     
    --compilation de la requéte
    DBMS_SQL.PARSE(V_Idcur, V_selectcmd, DBMS_SQL.V7);
     
    --établissement du lien
    DBMS_SQL.BIND_VARIABLE(V_idcur, ':b_f', f);
    DBMS_SQL.DEFINE_COLUMN(v_idcur, 1, v_ndf);
    DBMS_SQL.DEFINE_COLUMN(v_idcur, 2, v_ag);
    DBMS_SQL.DEFINE_COLUMN(v_idcur, 3, v_ad);
     
    --exécution de la requéte
    s:=DBMS_SQL.EXECUTE(v_idcur);
     
    --boucle de lecture des lignes du cursseur
    LOOP
    if (DBMS_SQL.fetch_rows(v_idcur)=0 then
    EXIT;
    end if;
     
    --affectation des valeurs dans les variables
    DBMS_SQL.COLUMN_VALUE(v_idcur , 1, v_ndf);
    DBMS_SQL.COLUMN_VALUE(v_idcur , 2, v_ag);
    DBMS_SQL.COLUMN_VALUE(v_idcur , 3, v_ad);
     
    --insertion dans la table temporaire
    insert into table_temp(col1)
    values (v_ndf||' '||v_ag||' '||v_ad);
    end LOOP
    --fermeture du curseur
    DBMS_SQL.CLOSE_cursor(v_idcur);
    commit;
    EXCEPTION
    when others then
    DBMS_SQL.CLOSE_cursor(v_idcur);
    Raise;
    end;

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Quel est le SGBD ?

    Je ne comprends pas du tout à quoi peut bien servir cette procédure !
    Pas plus que l'énoncé de son but d'ailleurs !
    une procédure qui élimine les attributs superflus dans une dépendance fonctionnelle
    Un exemple aiderait à comprendre peut-être ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut
    déja je suis pas sure de ma réponse ce que je veux faire c'est écrire une procédure qui élimine le superflu dans une dépendance fonctionnelle en sql dynamique
    voila un exp
    Soit F l'ensemble suivant de dépendances fonctionnelles canoniques.
    F = { 1) A->B ;  2)B->C ; 3)A,B->E, 4)A,E->F, 5)A,F->E}
    dans la df 3)la partie gauche en appliquant la pseudo-transitivité.  3)A, B ->E se simplifie alors en 3') A-> E.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ce que je ne comprends pas, c'est le rapport entre les dépendances fonctionnelles et une procédure SQL.

    Le spécialiste des dépendances fonctionnelles, c'est fsmrel, pas moi. Mais il me semble que ce genre d'animal se rencontre surtout au moment de la conception d'une base de données, lors de sa modélisation. Pas au moment où elle est déjà implantée et qu'on l'alimente ou qu'on l'interroge.

    Vouloir "supprimer des attributs superflus dans une dépendance fonctionnelle" veut-il dire "supprimer des colonnes inutiles dans une table" ?
    Alors ça veut dire que la conception a été ratée non ?

    C'est pour ça que je ne comprends pas le but de la procédure. J'ai l'impression qu'il s'agit d'utiliser un canon pour tuer un moustique !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Bonjour,

    Ce sera bien de préciser pour qu'on puisse regarder.
    Qu'est ce qui n'est pas "correct" et que fait ou ne fait pas votre procédure ?

    A part ça pour faire du dynamique il y a plus simple en fonction de votre version d'Oracle.
    Quelle est-elle ?

    Courage.
    Pozzo

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut
    Pour l'erreur c'est au niveau de la requéte V_selectcmd := 'select v_ndf, v_ag, v_ad from f';
    il faut éliminer le superflu hors je pense que cette requéte permet juste une selection des champs de la table
    pour ma version oracle c'est 10g

    aussi il me manque une partie aprés boucle loop (indiquée dans le code ci dessus) dans cette partie je dois comparer les lignes de la table temporaire avec celles de la table initiale et ou je trouve une ligne dont l'attribut droit = l'attribut gauche je dois la supprimer dans la table initiale et vider la table temporaire
    je sais pas si vous m'avez compris mais c'est vu que je suis débutante en sql dynamique je sais pas comment résoudre mon probléme et je me suis couru vers ce forum en espérant avoir de l'aide car il s'agit d'un compte rendu noté

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut
    landouch,

    bien compris que c'est un travail noté

    1) c'est quoi le paramètre f de la procédure ?
    2) pourquoi n'y a-t-il pas de :b_f dans v_selectcmd pour "binder" la variable ?

    on va y arriver, mais faut expliquer un peu plus les différents éléments, ce que tu dois faire (synthèse de l'énoncé, objectif de la procédure ...)

    A+

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/11/2012, 12h38
  2. Réponses: 1
    Dernier message: 30/04/2010, 18h56
  3. [DF] Définition d'une dépendance fonctionnelle dans Merise
    Par meryDev dans le forum Schéma
    Réponses: 3
    Dernier message: 14/11/2009, 17h42
  4. [DF] dépendances fonctionnelles entre les attributs et la clé
    Par sadook dans le forum Schéma
    Réponses: 9
    Dernier message: 06/09/2007, 00h51
  5. [Concept] Dépendances fonctionnelles
    Par bolo dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 24/01/2003, 20h13

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