Gå til innhold

Anbefalte innlegg

Et gitt databehandlingsprogram har fra ett titalls opp mot 150 filer per kunde. Allle disse filene har vært lagret i en flatstruktur på disken.

 

Nå er det blitt spørsmål om å få pumpet filene inn i en sql-database slik at større bedrifter kan benytte seg av tilgangskontrollen i sqlserver for å begrense hvem som skal ha tilgang til hvilke kunder osv. Det blir mao en helsikes mengde BLOB-felt hvor vær blob tilsvarer en fil på disk.

 

Så står valget mellom to datastrukturer, og jeg trenger argumenter for og i mot de to. (Forsøk å se bort i fra at dette kun er et hack og at dataen egentlig skulle vært modelert helt om osv, men det er ikke aktuelt i denne omgang...)

 

Modell 1:

 

Hver kunde = en record i en tabell. Tabellen har en kolonne for kundenummer og videre en kolonne per fil. Dersom man legger til nye filtyper legger man bare til en ny kolonne i tabellen.

| KUNDENR | FILID1 | FILID2 | FILID3 |---| FILIDn |

 

For å få tak i en fil må man da finne riktig record ut fra kundenavnet og deretter riktig kolonne ut fra filid.

 

Modell 2:

 

Hver fil får en egen rad i tabellen. Tabellen har en kolonne for kundenummer, en for filidentifikasjon og en for selve fila.

| KUNDENR | FILID | BLOB |

 

En gitt fil finnes da ved å velge riktig rad ut fra kundenummer og filid.

 

Det har utviklet seg til noe i nærheten av en religionsdebatt her på jobb så det hadde vært greit å fått noen argumenter utenifra.

 

-Vegar

Lenke til kommentar
Videoannonse
Annonse

Tror det blir minst kode med modell 1, men om metoden er ytterligere raskere enn modell 2 kan jeg ikke uttale meg om.

 

Hvis modell 1 brukes kan følgende SQL syntaks tas i bruk for å finne ut om en bruker har tilgang til de respektive filene:

 

SELECT [filID] FROM [Tabell-navn] 
WHERE KUNDENR='[Kundenummer]'

 

I samme stund kan følgende SQL-kommando brukes på modell 2:

 

SELECT * FROM [Tabell-navn] 
WHERE KUNDENR='[Kundenummer]'
AND FILID='[filID]'

 

Så det er i bunn og grunn en smaksak.

Lenke til kommentar
Modell 1:

 

Hver kunde = en record i en tabell. Tabellen har en kolonne for kundenummer og videre en kolonne per fil. Dersom man legger til nye filtyper legger man bare til en ny kolonne i tabellen.

| KUNDENR |  FILID1  |  FILID2  |  FILID3  |---|  FILIDn  |

 

For å få tak i en fil må man da finne riktig record ut fra kundenavnet og deretter riktig kolonne ut fra filid.

Erm...? FY!! Sånn skal man da for .... ikke gjøre det! ;)

 

Kolonner (og tabeller) angir struktur, mens dataene lagres i rader.

 

Er en god del enklere å legge til en rad enn det er å lage en ny kolonne, er det ikke? For ikke å snakke om å lage spørringer som gjør noe interessant med dataene.. (Ikke at de var så veldig interessante akkurat nå, men sett at dere vil legge inn nye kolonner i fremtiden.)

 

Denne løsningen vil antageligvis sørge for at databasen deres dør på seg også, så ikke å anbefale.

 

 

Modell 2:

 

Hver fil får en egen rad i tabellen. Tabellen har en kolonne for kundenummer, en for filidentifikasjon og en for selve fila.

| KUNDENR |  FILID  |  BLOB  |

 

En gitt fil finnes da ved å velge riktig rad ut fra kundenummer og filid.

 

Det har utviklet seg til noe i nærheten av en religionsdebatt her på jobb så det hadde vært greit å fått noen argumenter utenifra.

 

-Vegar

Høres bedre ut.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...