Problemone per il calcolo automatico di aggiornamenti con insert

lunedì 24 maggio 2010 - 11.39

dandi.box Profilo | Junior Member

Ciao a tutti, ho due tabelle, Courses e UsersCourses

nella prima tabella ho l'elenco dei corsi, nella seconda ho il collegamento dei corsi associati ad ogni utente

CREATE TABLE [dbo].[Courses](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Description] [varchar](200) NULL,
[IDCourse] [int] NULL,
[Update] [bit] NULL,
[RequiredUpdate] [bit] NULL,
[FrequencyUpdate] [int] NULL,
[ConcurrencyId] [timestamp] NULL,
CONSTRAINT [PK_Corsi] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Nella tabella Courses posso avere 2 tipologie di Corsi:

Corsi e Aggiornamenti, gli aggiornamenti sono indicati da un flag Update impostato a true

Nella tabella Courses ho un campo che mi indica la frequenza dell'aggiornamento (valido solo per corsi non per aggiornamenti), quindi se si tratta di un corso posso avere (non sempre) avere un aggiornamento (flag update impostato a true) con indicazione della frequenza in giorni (campo frequency)

[Update] -> indica che è un aggiornamento (non un corso semplice)
[RequiredUpdate] -> indica che è previsto un aggiornamento (valido solo per corsi, quindi solo i record con update a false)
[FrequencyUpdate] -> nel caso in cui sia previsto un aggiornamento, indica la frequenza
[IDCourse] -> indica il corso padre (valido solo per aggiornamenti) per sapere a quale corso fa riferimento un aggiornato


Quindi posso avere queste tipologie di corsi:
- Corsi che non prevedono aggiornamenti
- Corsi che prevedono aggiornamenti
- Aggiornamenti (sempre legati ad un corso)


CREATE TABLE [dbo].[UsersCourses](
[ID] [int] IDENTITY(1,1) NOT NULL,
[IDUser] [int] NULL,
[IDCourse] [int] NULL,
[DateCourse] [datetime] NULL,
[ConcurrencyId] [timestamp] NULL,
CONSTRAINT [PK_DipendentiCorsi] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

[IDCourse] -> id della tabella Courses (per conoscere il corso di riferimento)

Il mio problema è questo:

partendo dalla tabella corsi, inserendo un anno di riferimento, vorrei calcolare tutti gli aggiornamenti previsti, inserendo un record nella tabella Courses e creando il relativo record dall'aggiornamento anche per gli utenti che hanno quello specifico corso.

il problema sta nella frequenza, io conosco che ogni X giorni (esempio 200) devo fare un aggiornamento.... vorrei rendere il processo di generazione annuale: ogni anno eseguo una procedura che calcola gli aggiornamenti per l'anno considerato (inserito dall'utente, passato alla SP intendo).... credo però che ogni volta sia necessario iniziare da zero (quindi dal corso) e aggiungere +200 (esempio), verificare se esiste già un aggiornamento inserito (credo infatti che dovrei aggiungere un nuovo campo indicante l'anno di riferimento dell'aggiornamento)... anche perchè con cadenza esempio 200 giorni, un anno potrei avere 1 aggiornamento, l'anno dopo 2 ....

io mi sto scervellando ma non riesco proprio a trovare una soluzione, spero in un vostro aiuto!!




Gluck74 Profilo | Guru

E si, c'è proprio un problema di struttura.
il database così com'è non può soddisfare le tue esigenze. manca proprio un riferimento ad una data.
In genere queste cose si gestiscono facendo si la tabella "Corsi", ma anche una relativa tabella "Edizioni", dove appunto inserisci di volta in volta l'anno ed altri eventuali dati che ti servono, per identificare il "REALE SVOLGIMENTO" del corso.
La tabella UsersCourses farà riferimento poi a "Edizioni" e non più a "Corsi".

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

dandi.box Profilo | Junior Member

Potresti aiutarmi???

immaginavo che la struttura non fosse corretta.... io da 5 giorni cerco di trovare una soluzione ma sono in alto mare, spero tu possa aiutarmi

grazie

Gluck74 Profilo | Guru

l'unica cosa che posso fare è darti un esempio della tabella "edizioni".
Ho poche informazioni sul tuo progetto e non conosco nemmeno la situazione attuale del database, quindi non mi sbilancio su come mettere a posto il pregresso.

Comunque una tabella "Edizioni" potrebbe essere così:

idEdizione Progressivo identificativo FK_idCorso Chiave su tbl Corsi Note eventuali descrizioni DataInizio DataFine Oppure semplicemente AnnoSvolgimento

poi puoi spaziare sulle informazioni aggiuntive:

totOre Totale ore del corso FK_Docente Il docente che quell'anno ha tenuto il corso FK_Aula Dove è stato fatto il corso FK_Ente l'ente o gruppo che ha organizzato il corso

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

dandi.box Profilo | Junior Member

Grazie per le risposte.

Il mio problema non è tanto nella tabella ma nella procedura che *dovrebbe* gestire "automaticamente" gli aggiornamenti :((

Gluck74 Profilo | Guru

Ovvero? puoi spiegarmi meglio che non ho capito?

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

dandi.box Profilo | Junior Member

Non so come creare una SP che esegue la procedura di creazione automatica degli aggiornamenti legati ad ogni singolo corso....

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5