Archiviazione progetti

di il
4 risposte

Archiviazione progetti

Salve a tutti,
sono un Ing. Meccanico Progettista e mi è stato dato un compito un po' particolare almeno per la mia formazione e mie competenze, quindi mi scuso se ai più esperti può sembrare banale .
Ho creato per l'azienda per cui lavoro un app/software in matlab per il calcolo delle prestazioni di tubolari e fin qui tutto ok.
Oggi mi è stato chiesto di creare un archivio/database dei progetti in modo da poterli consultare in futuro.
Ho creato delle funzioni che mi permettono di scrivere in una tabella sql (creata in un DB gestito con Microsoft SQL Server Management) i vari dati che caratterizzano il progetto (diametro,spessore ecc), ogni riga è un progetto identificato univocamente da un ID.
Fatto ciò dovrei associare ad ogni progetto una sottotabella (passatemi il termine) con un numero di righe variabile che contiene i tipi di materiali utilizzati,quantità, la sequenza con cui devono essere utilizzati e altri valori.
Ho pensato a due approcci, molto probabilmente sbagliati entrambi .

Il primo è di creare una nuova tabella nel DB
in cui salvare i materiali utilizzati con le varie caratteristiche con associato anche l'id del progetto nella tabella madre in modo che posso richiamarli in matlab all'accorrenza cercando l'id-progetto.

Il secondo approccio è più brutale,
io so che il numero massimo di righe per questa sottotabella materiali è 30 con 10 colonne fisse (quindi un totale massimo di 300 valori massimi), quindi avevo pensato di creare 30x10 colonne nella tabella dei progetti in cui salvare opportunamente questi valori

Qualcuno mi sa dare qualche dritta?
Purtroppo sono in un piccolissima azienda in cui non c'è nessuno che si occupi di IT e mi è stata buttata addosso questa roba senza pensarci giusto perchè sono un po 'smanettone' con i Pc.

Grazie in anticipo

4 Risposte

  • Re: Archiviazione progetti

    dommypenny ha scritto:


    Ho creato delle funzioni che mi permettono di scrivere in una tabella sql (creata in un DB gestito con Microsoft SQL Server Management) i vari dati che caratterizzano il progetto (diametro,spessore ecc), ogni riga è un progetto identificato univocamente da un ID.
    Ha un nome proprio questa tabella?
    Potresti elencare tutti i nomi dei campi?

    dommypenny ha scritto:


    Fatto ciò dovrei associare ad ogni progetto una sottotabella (passatemi il termine) con un numero di righe variabile che contiene i tipi di materiali utilizzati,quantità, la sequenza con cui devono essere utilizzati e altri valori.
    In progettazione database si parla di tabelle "madri" e tabelle "figlie". Ma devi elencarci tutti i campi e capire meglio il tuo progetto.
  • Re: Archiviazione progetti

    OsvaldoLaviosa ha scritto:


    dommypenny ha scritto:


    Ho creato delle funzioni che mi permettono di scrivere in una tabella sql (creata in un DB gestito con Microsoft SQL Server Management) i vari dati che caratterizzano il progetto (diametro,spessore ecc), ogni riga è un progetto identificato univocamente da un ID.
    Ha un nome proprio questa tabella?
    Potresti elencare tutti i nomi dei campi?

    dommypenny ha scritto:


    Fatto ciò dovrei associare ad ogni progetto una sottotabella (passatemi il termine) con un numero di righe variabile che contiene i tipi di materiali utilizzati,quantità, la sequenza con cui devono essere utilizzati e altri valori.
    In progettazione database si parla di tabelle "madri" e tabelle "figlie". Ma devi elencarci tutti i campi e capire meglio il tuo progetto.
    Allora praticamente le colonne della tabella progetto (che quindi dovrebbe essere la madre) sono:
    Id(chiave), cliente , nome/codice prodotto, categoria, diam.interno, diam.esterno, lunghezza, E1, E2, E3, MomentoIn, Superfice, Peso

    ad ogni riga della tabella madre si deve collegare una tabella figlia con queste colonne:
    Materiale,Sp,Ng,Sp.tot,De,Largh,m2

    Spero di essere stato chiaro
  • Re: Archiviazione progetti

    dommypenny ha scritto:


    le colonne della tabella progetto (che quindi dovrebbe essere la madre) sono:Id(chiave), cliente , nome/codice prodotto, categoria, diam.interno, diam.esterno, lunghezza, E1, E2, E3, MomentoIn, Superfice, Peso
    ad ogni riga della tabella madre si deve collegare una tabella figlia con queste colonne:Materiale,Sp,Ng,Sp.tot,De,Largh,m2
    Hai qualche problema di NORMALIZZAZIONE (che parolaccia!).
    Ogni tabella deve avere CAMPI (più che colonne...diventano colonne quando andrai a visualizzare il tutto…) OMOGENEI ossia che devono descrivere tutto ciò che riguarda solo ed esclusivamente il NomeTabella che li rappresenta. Il campo Cliente non ha nulla a che vedere con gli altri campi. Devi avere almeno una tabella Clienti con tutti i tipici campi anagrafici (IDCliente, Cliente, Indirizzo, Città, ecc...)
    Abituati anche a nominare i campi ID in modo esplicito/idoneo al NomeTabella corrispondente.
    I campi della TuaTabellaFiglia...molti sono puntati e non riesco a capire il loro significato.
  • Re: Archiviazione progetti

    dommypenny ha scritto:


    Spero di essere stato chiaro
    Più o meno.
    Però, per cortesia, evita l'overquoting (inutile e fastidioso)


    Riguardo al tuo database, prendendo come base i nomi dei campi (almeno per quelli per noi 'comprensibili') dovresti utilizzare delle tabelle anagrafiche.

    In dettaglio, questi sono i campi che tu hai indicato:
    Id(chiave), cliente , nome/codice prodotto, categoria, diam.interno, diam.esterno, lunghezza, E1, E2, E3, MomentoIn, Superfice, Peso

    ma non si usa mai il campo direttamente ma la chiave esterna della relativa tabella anagrafica. Esempio la tabella Progetti:
    - IDProgetto (non ID)
    - IDCliente (tabella Clienti)
    - IDProdotto (tabella Prodotti)
    - IDCategoria (tabella Categorie)

    Questo rende dinamica e flessibile la creazione di future entità (Clienti, Prodotti, Categorie, ecc.)

    Difficile dare ulteriori suggerimento, dato che non si conosce nulla di ciò che servono gli altri campi.

    EDIT: Io e Osvaldo ci siamo sovrapposti, ma come vedi abbiamo detto più o meno le stesse cose.
Devi accedere o registrarti per scrivere nel forum
4 risposte