Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    Progettazione DB e ridondanze, un aiuto

    Buonasera. Dovendo progettare (per un esame) una base di dati mi stanno venendo mille dubbi.
    Uno di questi è, ad esempio: se devo memorizzare per ogni utente la sua città di nascita conviene metterla come attributo oppure in una entità a parte legata da una relazione di "nascita"? Perché se ci fossero ad es. 1000 persone nate a Milano, nel DB avrei 1000 volte l'occorrenza di Milano. Stesso discorso per il corso che l'utente frequenta. Volendo, il discorso potrebbe estendersi anche al nome e al cognome...ma qui non so se abbia senso...forse solo per il nome...
    Ancora, nel modello ER un attributo (stato) che può avere solo due valori (chiuso/aperto) come lo rappresento? Attributo composto oppure attributo semplice imponendo poi qualche vincolo sui dati?
    Voi che dite?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Allora per la città di nascita puoi realizzare una tabella "Comuni" e legarla alla tabella utenti tramite id. Per nome e cognome non ha senso. Per i corsi puoi creare una teballa "Corsi" dove leghi l'utente tramite ID ai vari corsi che segue.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Io il suo dubbio lo capisco.
    All'università non tutto funziona come nella vita reale.
    Secondo me dipende da come ve lo ha spiegato il professore.
    Stando al tuo esempio: a me per esempio insegnarono che se della città in se non ti interessa niente, ma ti interessa solo il nome della città dove una persona è nata, allora quello è un campo della tabella "Studente" in cui metti il nome della città. Se invece della città ti interessano anche altre informazioni (cap, regione...) allora è un'entità e la devi rappresentare in una sua tabella da mettere in relazione con quella degli studenti come ti ha consigliato mexican.

    Stesso discorso per i corsi, se nell'esercizio ti interessa solo il nome del corso, quello è un attributo, se invece ti interessano anche altre informazioni (codice del corso, numero crediti...) allora è un'entita e va rappresentata in una tabella da mettere in relazione con quella degli studenti.

    Quindi devi fare un po' i conti su come il professore vi ha presentato l'argomento, potrebbe essere che la sua visione sia differente e lì non conta come si fa nella realtà, ma come il professore vuole che si faccia.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Grazie. Mi sono però resa conto che il modello ER non è il "posto" giusto dove preoccuparsi delle ridondanze. Per di più, non ha senso nemmeno mettere Città come entità: non ha proprietà significative e non descrive classi di oggetti con esistenza autonoma.

    edit: non avevo visto il messaggio di Alhazred (Abbiamo scritto contemporaneamente) che afferma esattamente ciò che sto affermando io. Mi sono posta un dubbio scemo, probabilmente perché non avevo ancora ben chiara la definizione di entità.
    Ultima modifica di Jamie04; 27-06-2017 a 11:36

  5. #5
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Io il suo dubbio lo capisco.
    All'università non tutto funziona come nella vita reale.
    Secondo me dipende da come ve lo ha spiegato il professore.
    Stando al tuo esempio: a me per esempio insegnarono che se della città in se non ti interessa niente, ma ti interessa solo il nome della città dove una persona è nata, allora quello è un campo della tabella "Studente" in cui metti il nome della città. Se invece della città ti interessano anche altre informazioni (cap, regione...) allora è un'entità e la devi rappresentare in una sua tabella da mettere in relazione con quella degli studenti come ti ha consigliato mexican.

    Stesso discorso per i corsi, se nell'esercizio ti interessa solo il nome del corso, quello è un attributo, se invece ti interessano anche altre informazioni (codice del corso, numero crediti...) allora è un'entita e va rappresentata in una tabella da mettere in relazione con quella degli studenti.

    Quindi devi fare un po' i conti su come il professore vi ha presentato l'argomento, potrebbe essere che la sua visione sia differente e lì non conta come si fa nella realtà, ma come il professore vuole che si faccia.
    Purtroppo se il professore sbaglia lui è costretto a sbagliare....
    Ma il tuo ragionamento è corretto. Poi in teoria si dovrebbe pensare anche alla ridondanza delle info.
    Se sai che la città ti potrebbe servire anche in altre tabelle conviene crearne una a parte e richiamare l'ID in quelle interessate. Se i corsi al quale un utente può partecipare sono più di uno dovresti avere una tabella per "Utenti" ed una per "Corsi" e poi una tabella che interseca le due "UtentiCorsi" dove li leghi con i due ID.

    Ma come dice Alhazred dipende molto dalle tue esigenze e la prima è sicuro soddisfare il tuo professore e la sua visione.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da mexican Visualizza il messaggio
    Purtroppo se il professore sbaglia lui è costretto a sbagliare....
    Ma il tuo ragionamento è corretto. Poi in teoria si dovrebbe pensare anche alla ridondanza delle info.
    Se sai che la città ti potrebbe servire anche in altre tabelle conviene crearne una a parte e richiamare l'ID in quelle interessate. Se i corsi al quale un utente può partecipare sono più di uno dovresti avere una tabella per "Utenti" ed una per "Corsi" e poi una tabella che interseca le due "UtentiCorsi" dove li leghi con i due ID.

    Ma come dice Alhazred dipende molto dalle tue esigenze e la prima è sicuro soddisfare il tuo professore e la sua visione.
    Sì, anche ciò che hai scritto qui è corretto, bisognerebbe sapere cosa chiedono esattamente le specifiche del problema.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Grazie.
    Ultima modifica di Jamie04; 28-06-2017 a 18:21

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 © 2024 vBulletin Solutions, Inc. All rights reserved.