Creearea Bazei de date – si suport filestream in Sql Server 2008

Deocamdata o sa facem doar tabelele pentru detaliile/resursele care tin de un Angajat . Hai sa enumeram citeva :

  1. Un Angajat are nume( se poate schimba – prin casatorie, de ex.), prenume , poza – sa le numim proprietati UserRelated
  2. Un Angajat poate avea telefon , laptop – sa le numim proprietati JobRelated
  3. Un Angajat poate avea cont de Active Directory, email , Citrix , acces VPN – sa le numim ITRelated

(Daca aveti si alte sugestii,va rog sa imi scrieti)

Evident ca am putea creea o tabela prin care sa avem , ca si coloane, toate aceste proprietati – dar aplicatia nu ar fi destul de flexibila, in cazul in care cineva ar vrea sa mai adauge un detaliu/resursa ar trebui sa refacem aplicatia. Asa incit totul se rezolva cu un nivel de indirectare – o sa creez o tabela care sa contina gruparile de Proprietati (UserRelated, JobRelated , ITRelated) –, una care sa contina Proprietatile( nume, prenume, poza, telefon, laptop, email, etc) si una care sa faca legatura intre ele. De asemenea , trebuie ca tabelele sa contina date despre cine a introdus informatia si pina cind e valabila – acestea vor fi 3 cimpuri, continute tot timpul in (aproape) fiecare tabela , de tipul :

[DateModified<NumeTabela>] [datetime] NULL, –data modificarii

[NameUserModified<NumeTabela>] [nvarchar](150) NULL, – nume utilizator care a modificat

[IPModified<NumeTabela>] [nvarchar](150) NULL, — ip-ul de la care s-a produs modificarea

Deocamdata am ajuns la urmatoarea structura :

clip_image002

Pentru conformitate , iata scriptul de creere al tabelelor si scriptul de creere a resurselor/detaliilor Angajatului.

http://serviciipeweb.ro/iafblog/content/binary/net35/bd/1/db.zip

Ce vreau sa fac in continuare este sa fac coloana ValueBinaryUserGroupProperty de tipul FileStream – adica sa isi pastreze datele pe hard, de fapt.

Verificam ca serverul suporta filestream – click dreapta pe server, “properties”, selectati “Advanced” si verificati ca filestream este OK:

clip_image004

Apoi click dreapta pe baza de date, “properties”, selectati FileGroups si acolo adaugati un filestream(bifati si “default”)

clip_image006

Acum trebuie sa adaugam un file ca sa putem profita de acest filestream . Trebuie ales File_Type : “filestream data”, filegroup-ul si, cel mai important, folder-ul in care sa il punem (ca alegere usoara, este acelasi folder ca fisierul primar de date)

clip_image008

Acum putem sa construim tabela noastra cu filestream – stergem tabela accUserGroupProperty (drop table accUserGroupProperty ) si o creeam cu suport de FileStream :

CREATE TABLE [dbo].[accUserGroupProperty](

[IDUserGroupProperty] [uniqueidentifier] NOT NULL ROWGUIDCOL PRIMARY KEY,

ToDateUserGroupProperty datetime NULL,

[ValueTextUserGroupProperty] [nvarchar](max) NULL,

[ValueBinaryUserGroupProperty] [varbinary](max) FileStream NULL,

[IDUser] [bigint] NOT NULL,

[IDProperty] [bigint] NOT NULL,

[DateModifiedUserGroupProperty] [datetime] NULL,

[NameUserModifiedUserGroupProperty] [nvarchar](150) NULL,

[IPModifiedUserGroupProperty] [nvarchar](150) NULL,

)

Ce ne trebuie neaparat pentru o coloana de tipul FileStream :

  1. Suport Server, BD ( facut deja)
  2. O coloana in tabela respectiva de tipul NOT NULL ROWGUIDCOL PRIMARY KEY

Cu ce ne afecteaza : cu aproape nimic – dar e bine sa poti vedea fisierele pe hard * de ex., poza angajatului o sa fie direct pe hard in loc sa o stocam in BD.

Nu uitati ca tot ce am facut aici prin click-uri se poate face si prin script, cu ajutorul butonului “Script” – se poate gasi usor in toate pozele precedente

Tema pentru acasa : Creeati o baza de date cu support filestream, o tabela cu o coloana filestream si inserati un text. Observati modificarile de pe folder-ul unde ati spus sa se creeze FileStream.

Lecturi Recomandate:

FileStream cu SQL Server (pe scurt)

http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/05/09/sql-server-2008-filestream-part-1.aspx

Database normalization

http://en.wikipedia.org/wiki/Database_normalization

Developing Time Oriented databases in SQL

http://www.cs.arizona.edu/people/rts/tdbbook.pdf

Leave a Reply

Your email address will not be published. Required fields are marked *