Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Help me!!

    Ciao a tutti,

    il problema è questo: sto usando oracle per un progetto e db relazionale ad oggetti, ora dopo aver definito tipi e tab devo costruire l'interfaccia in java ma non riesco a capire come si dichiarano i REF, le tabelle innestate e le table of REF...

    ....sono in crisi nera!

    Che ne dite riuscirò a trovare qualcosa?

    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    certo che come titolo c'azzecca proprio.

    Interfaccia grafica? Oppure un livello ancora più basso, scrivere le classi che andranno a gestire le query (e poi eventualmente un contesto grafico dove andare a sistemare il tutto)?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Prima di tutto leggi il regolamento o la prossima volta mi vedrò costretto a chiudere la discussione.

    Poi, cerca di spiegare bene cosa vuoi ottenere e, magari, aggiungi anche del codice che permetta a chi legge la discussione di aiutarti.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Scusatemi, avete ragione, sono stata "leggermente" poco chiara...vediamo se questa volta riesco a spiegarmi meglio:

    In oracle ho creato il tipo di dati persona_ty:

    codice:
    create or replace type PERSONA_TY as object
    ( Id                 NUMBER,
      Nome             VARCHAR2(25),
      Cognome        VARCHAR2(25),
      Eta                NUMBER,
      Sesso             CHAR,
      DataNascita     DATE,
      Istruzione        VARCHAR2(100),
      Telefono          NUMBER,
      StatoCivile       VARCHAR2(100),
      CallRefDoc        DOCTYPE_TY,      
      CallRefTesto     TESTOTYPE_TY,
      Indirizzo           INDIRIZZO_TY,
      InfoAbitazione   VARCHAR2(1000),
      InfoIntervista   VARCHAR2(2000),
      Coniuge           REF PERSONA_TY,
      Figli                COLLFIGLI_TY );

    Ora DOCTYPE_TY, TESTOTYPE_TY,COLLFIGLI_TY sono delle tabelle di riferimenti ai tipi creati, rispettivamente, documenti_ty, testo_ty, persona_ty.

    Ad esempio, ho un cliente che è di tipo persona_ty,alla colonna "figli" ci saranno tanti REF quanti figli ha il cliente in questione. I REF punteranno al tipo persona_ty perchè cmq i figli sono delle persone e hanno gli stessi attributi del padre.

    Mentre per coniuge ho un solo REF a persona_ty(visto che "teoricamente" ogni cliente ha al più un coniuge).

    In seguito ho definito la tabella PERSONA:

    codice:
    create table persona of persona_ty (id primary key)
    nested table callrefdoc store as callrefdo_tab
    nested table callreftesto store as callreftesto_tab
    nested table figli store as figli_tab;
    Adesso devo definire la classe persona e qui iniziano i problemi perchè non riesco a capire che tipi usare per determinati attributi, quali coniuge, figli ovvero quelli che hanno tabelle di riferimenti o semplici REF.

    quando scrivo:

    codice:
    public class Persona {
        
        /** Creates a new instance of Persona */
        public Persona() {
        }
           
         private int id;
         private String nome;
         private String cognome;
         private int età;
         private String sesso;
         private Date dataNascita;
         private String istruzione;
         private String luogoNascita;
         private String telefono;
         private String occupazione;
         private String statoCivile;
         private String infoAbitazione;
         private String infoIntervista;
    Gli attributi coniuge, figli, callRefDoc, callRefTesto, indirizzo di che tipo saranno?

    Non so se questa volta sono stata più chiara o se ho peggiorato la situazione ma credetemi sono un pò confusa anche io....

    Vi ringrazio cmq per l'impegno

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Comincerei col costruire una classe per ognuno degli oggetti definiti in Oracle che non hanno riferimenti ad altri oggetti in Oracle. Per esempio, immagino che la tabella che gestisce gli indirizzi abbia solo campi testo o numerici.

    Venedo alla tua domanda specifica, che magari ti preme di più: a prescindere dal fatto che sia un tipo in database o meno, Coniuge comunque è una persona e quindi un'istanza della classe Persona, per cui avrai in Persona un campo Persona Coniuge:

    codice:
    public class Persona {
        
        /** Creates a new instance of Persona */
        public Persona() {
        }
           
         private int id;
         private String nome;
         private String cognome;
         private int età;
         private String sesso;
         private Date dataNascita;
         private String istruzione;
         private String luogoNascita;
         private String telefono;
         private String occupazione;
         private String statoCivile;
         private String infoAbitazione;
         private String infoIntervista;
         private Persona Coniuge;
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Ciao!

    Quindi sono stata più chiara!

    no scherzo, ho capito per coniuge, giusto..io invece pensavo di dover mettere un tipo REF...e per le tabelle di REF? come faccio?

    Ora purtroppo non posso provare le cose che mi hai suggerito perchè devo scappare al lavoro, ma stanotte tornerò a leggere la tua risposta(spero).

    Grazie e buona giornata!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non so che cosa sia la sintassi REF di Oracle
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Sto usando un relazionale ad oggetti, per cui ogni oggetto è una coppia(identificatore, valore) dove l'identificatore(OID) è unico e immutabile.

    Quindi REF(T) restituisce l'OID dell'oggetto T.

    Come dei puntatori. Es. se ricordi in oracle nella definizione di persona_ty ho l'attributo coniuge che è di tipo REF persona_ty ovvero nel campo coniuge ci sarà un OID che punta al tipo persona_ty quindi se dovessi fare un DEREF mi restituisce tutti gli attributi di persona_ty...non so se sono stata chiara.

    il mio problema è con le tabelle di REF. Cioè ti faccio un esempio..l'attributo figli è di tipo COLLFIGLI_TY dove:

    COLLFIGLI_TY as table of ref PERSONA_TY ovvero una tabelle di riferimenti al tipo persona_ty. Quindi nel campo figli ci sarà una tabella innestata contenente solo riferimenti. Questo perchè un cliente può avere più figli che cmq sono delle persone.

    Ora come dichiarare in java queste tabelle? Cioè quando nella classe persona metto l'attributo figli di che tipo sarà?

    Non riesco a trovare niente...è da diventar matti,ho bisogno di questo, è il lavoro della mia tesi e mi sono bloccata...speriamo bene.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    I figli sono persone, quindi come coniuge, solo che hai un array di oggetti persona.
    codice:
    public class Persona {
        
        /** Creates a new instance of Persona */
        public Persona() {
        }
           
         private int id;
         private String nome;
         private String cognome;
         private int età;
         private String sesso;
         private Date dataNascita;
         private String istruzione;
         private String luogoNascita;
         private String telefono;
         private String occupazione;
         private String statoCivile;
         private String infoAbitazione;
         private String infoIntervista;
         private Persona Coniuge;
         private Persona[] figli;
    Pero' non mi e' molto chiaro cosa farai con i dati dei figli. Immagino che popolerai la classe dopo una query, quindi io tirerei su solo un'etichetta (nome+" "+cognome del coniuge e dei figli) e al max l'id dei suddetti per costruire dei collegamenti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.