Relazioni tra entità

di il
6 risposte

Relazioni tra entità

Salve a tutti, volevo porvi una semplice domanda:

Conoscendo le varie entità che compongono il database che devo trattare, avendo informazioni relativamente dettagliate sulle effettive funzioni che questo dovrà avere, come definisco le relazioni? Mi spiego meglio, il progetto tratta di un'impresa di giardinaggio che gestisce serre suddivise in settori che contengono le varie piante. Ciascuna pianta è dotata di nome,genere ecc.. Ora, sulla base di cosa si definiscono le relazioni nell'ambito del diagramma Entità - Relazione? Io ho ipotizzato di riportare le relazioni più significative, in questo caso non so, l'acquisto di una pianta, un intervento di manutenzione oppure l'attivazione di un processo di irrigazione automatica.. A vostro parere la una relazione valida può essere del tipo pianta(entità) --> acquisto(relazione) <-- statoSerra(entità). Non vi allego il pdf con le specifiche poichè non penso abbiate voglia di leggervi 22 pagine e comunque non ritengo giusto delegare il mio compito ad altri, vi ringrazio in anticipo.

6 Risposte

  • Re: Relazioni tra entità

    Tutto dipende che grado di precisione e profondità vuoi dare al tuo database. Premesso che non conosco il tuo campo professionale provo a buttare giù vaghe mie ipotesi, correggimi tu dove sarei troppo superficiale oppure non capisco.
    A) Vuoi un database che elenca tutte le tue piante con corrispondenti appartenenze alle loro razze/famiglie (ecco qui sono io che invento termini tecnici non appopriati alle piante). Forse ti serviranno solo 2 tabelle Razze uno-a-molti Piante.
    B) Vuoi un database che tracci nel tempo tutte le cure da applicare alle piante (giardinaggio, potatura...). Servirà qualche altra tabella che tracci ciò nel Tempo.
    C) Vuoi un database che tracci Clienti, Ordini, DettagliOrdini: servirano molte altre tabelle.

    Non dobbiamo leggere le tue 22 pagine. Prova a esporci quello che hai messo in piedi tu finora, dove vuoi arrivare (possibilmente a piccoli passi) trovando termini tecnici comuni sia al tuo campo professionale, sia a quelli dei database relazionali (tabelle, campi, relazioni...).
  • Re: Relazioni tra entità

    Il database deve tener traccia delle varietà di piante(tabella Pianta), delle loro necessità(tabelle Temperatura,Luce,Irrigazione,Concimazione,Potatura,Rinvasi) inoltre l'azienda è suddivisa in sedi che contengono serre, che contengono ripiani, che ospitano contenitori(Tabelle Sedi,Serre,Ripiani,Contenitori). Inoltre queste piante possono ammalarsi di diverse patologie a cui sono associati dei sintomi che a detta del testo vengono rilevati in automatico. Si conoscono anche le relative modalità di cura delle suddette patologie(Tabelle Patologie,Sintomi,Trattamenti).
    Ho preso in analisi ad esempio la tabella Pianta e la tabella Concimazione.
    La tabella Pianta è così strutturata a livello di attributi:(sottolineato=chiave, non so se è uno standard) Pianta(CodicePianta,Nome, Genere, Cultivar, DimensioneMax, IndiceManutenzione) , invece la tabella Concimazione è così strutturata Concimazione(CodicePianta, CodiceTrattamento, Modalita, TipoConcime, DataInizio, DataFine, QuantitaConcime). Essendo Concimazione e Pianta due entità, devo collegarle tramite una relazione creando una sorta di "Log delle concimazioni". Per fare questo, posso quindi sostenere che la tabella LogConcimazioni sia la relazione che lega Concimazione a Pianta?

    Per chiarezza 1° anno Ing. Informatica, grazie per la risposta!
  • Re: Relazioni tra entità

    Penso che il tuo progetto vuole essere molto ambizioso=completo=complesso. Non penso che il forum sia la sede adatta per analizzare tutto insieme. Posso provare a risponderti alle piccole domande.
    Perchè parli spesso di "entità" quando nei database si parla più tecnicamente di "tabelle"?
    Le tabelle in genere riportano un nome al "plurale", mentre i nomi campo al "singolare". Sembra una puntualizzazione teorica, ma penso abbia il suo senso a livello logico (anche per intenderci meglio nel gergo dei programmatori).
    Per l'indicazione della chiave primaria esistono molti modi (non esiste un vero e proprio standard), l'importante è farsi capire chiaramente (come hai fatto tu va benissimo).
    Non capisco perchè hai un tabella "specifica" Concimazioni. Su una pianta possono essere fatti molti manipolazioni/trattamenti e solo uno di questi è la concimazione. Ma anche la potatura lo è. Innaffiatura, raccolto....Io chiamerei una tabella più generale Operazioni o Azioni.
    In un database "agricolo" che avevo creato io (nulla a che vedere con il progetto che vorresti mettere in piedi tu), avevo creato qualcosa del genere:
    Alberi o Piante
    IDPianta (chiave primaria)
    NomePianta
    Varietà

    Localizzazioni
    IDLocalizzazione (chiave primaria)
    ColonnaMappa
    RigaMappa

    LocalizzazioniPiante (nel mio caso si trattava della posizione dell'albero sul terreno, nel tuo caso si parla di Collocazioni...)
    IDLP (chiave primaria)
    IDPianta (numerico)
    IDLocalizzazione (numerico)

    AzioniSullePiante
    IDASP (chiave primaria)
    DataAzione
    IDLP (numerico)
    Azione

    Azioni
    Azione (testo, chiave primaria)

    Relazioni:
    Piante.IDPianta uno-a-molti LocalizzazioniPiante.IDPianta
    Localizzazioni.IDLocalizzazione uno-a-molti LocalizzazioniPiante.IDLocalizzazione
    LocalizzazioniPiante.IDLP uno-a-molti AzioniSullePiante.IDLP
    Azioni.Azione uno-a-molti AzioniSullePiante.Azione

    Bada bene che questo database non aveva grandi velleità di dire chissà che. Andrebbero fatte molte altre osservazioni e analisi in proposito, ma siccome faccio agricoltura per hobby...per quello che mi serviva (non lo guardo da un bel po') tirava bene lo stesso.
  • Re: Relazioni tra entità

    Grazie, io come da richiesta sto identificando delle operazioni costose in termini di risorse del DB immaginandole come eventuali "report" dello stato attuale di questo giardino, ti allego la bozza di ER da me fatta

    ,

    Le relazioni sono tabelle che vengono generate qualora l'utente le richieda, ad esempio.. l'operatore vuole sapere in data odierna quali piante hanno bisogno di un trattamento, esegue e riceve una tabella contenente ciò che deve fare, può essere un ragionamento sensato?
  • Re: Relazioni tra entità

    Non sono capace di leggere/interpretare quello schema ER...non ho mai lavorato di analisi così. Mi lascio solo trasportare da buon senso e esperienza di quello che so su regole gerali di database e applicazione su Access.

    ducajack ha scritto:


    l'operatore vuole sapere in data odierna quali piante hanno bisogno di un trattamento, esegue e riceve una tabella contenente ciò che deve fare, può essere un ragionamento sensato?
    La richiesta è sensata. Bisogna capire come ci si deve arrivare.
    Continuo a citare la mia esperienza sul database "agricolo". La tabella Azioni prevedeva anche un tipo di azione che si chiamava "Osservazione". Ossia immaginiamo che devo potare 100 ulivi:
    1) Prima di farlo li osservo uno per uno e dichiaro quanta chioma o quali parti necessitano potatura (Azione = Osservazione)
    2) Faccio una analisi in base a quali ulivi dare la precedenza in base alla quantità di rami da potare oppure loro posizione strategica sul campo in modo da evitare di fare su e giù inutilmente). Query di selezione opportunamente ordinata.
    3) Azione = Potatura

    I punti 1) e 3) rappresentano l'input dati sugli stessi valori piante/alberi, ma in momenti diversi (DataAzione) e con azioni diverse.

    Non so se i nostri discorsi riescono a convergere oppure no.
  • Re: Relazioni tra entità

    Si, allora è come la intendo io, perfetto! Rettangolo = entità , Rombo= relazione. Grazie per le risposte
Devi accedere o registrarti per scrivere nel forum
6 risposte