Domanda

Come vi rappresentare un temporale molti-a-molti relazione in SQL? In circostanze non temporali si potrebbe usare un tabella di collegamento (alias collegamento / ponte / carta) per collegare le due parti.

è l'aggiunta di monitoraggio temporale semplice come tra cui un ValidStart e ValidEnd colonne sul tavolo bivio? Se avete fatto questo, che cosa aspetti (se presente) ha fatto si esegue in? Esiste un metodo migliore per tenere traccia dei cambiamenti nel corso del tempo in questo tipo di relazione?

se aiuta a tutti, nel mio caso che sto specificamente utilizzando SQL 2008 e il dato temporale non è bitemporale come sto solo monitoraggio di tempo valido.

È stato utile?

Soluzione

Sto lavorando su un progetto (da alcuni anni) che utilizza sia i dati temporali e temporali molti-a-molti rapporti. Ogni tabella ha validFrom e ValidUntil colonne (date memorizzare solo).

In primo luogo è necessario definire la semantica delle colonne valido *, vale a dire se ValidUntil vengono inclusi o esclusi dal campo di validità. È inoltre necessario specificare se sono validi date NULL e quale sia il loro significato è.

Dopodiché è necessario un paio di funzioni, come dbo.Overlaps2 () e dbo.Overlaps3 () che ricevono 2 e 3 intervalli di date rispettivamente, e restituire 1 se gli intervalli di date sovrappongono e 0 altrimenti.

In cima a quello, ho definito viste per i molti-a-molti con dbo.Overlap3 (...) = 1.

Un altro punto è quello di avere un insieme di funzioni che calcolano il campo di validità effettiva in base alle date in 2 o 3 tabelle correlate.

Recentemente ho dovuto aggiungere funzionalità per consentire a un utente di visualizzare tutti i dati disponibili, o solo i dati in corso di validità. Ho salvare questa impostazione in una tabella utenti, associo lo SPID per l'utente quando si apre una connessione, e filtrare i record in un'altra serie di punti di vista.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top