fredag 20 november 2009

MS SQL server 2008

Den första MS SQL server kom 1989 med versionen 1.0 denna version var gjord för Os/2. Idag så är vi uppe i version 10.
Kärnan i MS SQL server heter Integration service. Runt den finns tre stycken tjänster.
Database Engine - Databas motorn där vi skapar tabeller, objekt, diagram, sökning.
Reporting Services - Rapport funktion för Visual studio tex skriver fakturor. Sammanslagning av data.
Analyzing service - Analysera data, hur mycke har vi sålt? hur mycke har folk jobbat? Vad har vi sålt

Utanför dessa tre finns ytterligare några tjänster.
Service broker - När något händer eller går fel så kan denna skicka meddelande till tex admin.
Replication - Replikerar data över till andra databaser
Full-Text Search - Sökfunktion för att få snabbare sökning i stora textmassor.

för att i ett int fält sätta möjligt maxvärde använder man sig av check constrains.
Beräkna fält genom att använda Computed column specification.


Produkt Versioner av MS SQL server - Versioner

Enerprise Edition -  Fullversion av SQL server för företag.
Developer Edition - Fullversion av SQL men endast för utveckling.
Express Edition - Gratisversion för hemmabruk
Jämför alla olika versioner här

När man skapar en databas vart lägger den sig? 
Microsoft SQL server\MSSQL\DATA\*.mdf och *_log.ldf
MDF filen innehåller själva databasen medan LDF filen innehåller loggen på databasen. Dessa ska man helst lägga på olika diskar för att inte förlora all data. Genom att ha LDF filen (Loggen som sparar alla händelser) så finns det möjlighet att göra en rollback i databasen om det har inträffat ett fel. Denna funktion backar då tillbaka till då man vet att databasen fungerade bra.

Eftersom att databasen är låst så går det endast att göra backup genom databasen.

Columns - Info om fält som finns i tabellen.
Keys -befintliga nycklar i tabellen
Constrains - Begränsningar som används
Triggers - Update, Insert, Delete
Indexes - Indexeringar i tabellen
Statistic - Statistik, ändringar av tabell.

När man skapar en databas ska man endast använda tecken A-Z 0-9 sammanskrivet. Inga blanksteg eller special bokstäver får användas.Man ska även inte använda reserverade ord som tex Select, update, null osv.

Namn på databaser kan innehålla 128 tecken.
Låt MS SQL bestämma namn på PK, FK så blir det inga kollisioner.

Objekthierarkin
I SQL server kan det finnas flera databaser.
I en databas kan det finnas flera scheman, Default schemat är dbo.
I ett schema finns flera tabeller.
Namnsättning för tabeller sker på detta sätt
Server.Databas.Schema.Tabell
Rättigheter kan delas upp mellan scheman så att vissa avdelningar eller användare inte får tillgång till vissa scheman.








torsdag 19 november 2009

Referentiell integritet. / Skapa en databas MS SQL server

Referentiell integritet är en mystisk ord kombination som jag inte har någon aning om vad det betyder. Dock är det så att vissa objektrelationer styrs av detta. Man kan till exempel inte ha ett barn utan att en förälder existerar.

Om man tar bort data i en förälder. Vad kommer hända med dessa i barnposterna?


Insert (Enforce foreign key constrein) yes,  En tvingande relation = [Kund]-|------E[kontakt] (Detta sätts inte i databasen utan detta sätter man i programmet.
Man har inte Insert när man till exempel ska läsa in data ifrån en annan databas

Alternativ mellan relationer (INSERT and UPDATE specifications)
No Action, Restrict(mySQL) = Kan inte radera parent(Poster) så länge det finns child(Poster). Man kan radera childs tills en parent inte har childs kvar. då kan man radera parent.

Cascade = Om Kund(Förälder) raderas så försvinner alla Barn(Poster) [Detta kräver inte att programmet är programmerat på detta sätt]

Set default = Om föräldern raderas så sparas barnposterna. Kanske inte vättigt att spara kontakt om man har tagit bort kunden. Vem går telefonnumret till? Men om man däremot tar bort Kund(förälder) och sparar faktura(barn) så kan man lagra faktura informationen för tex försäljningsstatistik, när sålde man vissa produkter osv. FK ifrån föräldern kommer bli ett default värde.

Set null = FK blir till Null om man tar bort kunden.

Update
Denna har att göra med förhållandet mellan Fk och Pk.
Cascade = Om Pk ändras så kommer även Fk ändras.
No Action = Ändring inte är tillåten. Eftersom vi använder räknare i våra PK så kommer inte databasen tillåta att man ändrar PK.

När man har valt om man ska ha Insert Yes/No, Delete(No action/Cascade/Set Default/Set Null) och Update så har man gjort en Referentiell Integritets utredning.

Att skapa en databas MS SQL server 2008
Högerklicka på databases och välj New Database.
När du valt detta får du upp en ruta där du ska välja namn på databasen samt hur stor den kommer vara och hur mycket historik (Log) det kommer finnas. Under databas namnet kan man välja vem som ska bli ägaren av databasen. Default är den som är inloggad.



För att sedan lägga till en post och göra den till PK gör du som i bilden nedan.


Identity increment = Hur många steg den ska ta för varje nyckel
Identity Seed = Startvärde för nyckel

För att skapa en ny tabell så högerklickar man på tables och väljer New Table...
För att sedan kunna spara tabellen när du har gått in och ändrat något måste du gå in på [Tools -> Options -> Designers -> Table and Database Designers] bocka av Prevent saving changes that require table re-creation.
Detta är en säkerhetsåtgärd för att inte vanliga användare ska klicka runt och råka ändra i tabellen. Man kan ändra i tabellen genom att anropa kommandon.

För att editera den nyskapade tabellen högerklickar man och tar Edit top 200 rows.

för att få en ny tabgrupp högerklickar man på tabben och tar new horisontal tabgroup.

När du vill koppla ihop tabellerna med hjälp av ett diagram så högerklickar du på Database Diagram och tar New database diagram. lägg till alla tabeller genom att välja add.

När du har dragit över en PK till en FK så finns där även Enforce foreign key constrein.

Datamodellering - Del 2

Sammansatt nyckel, Foreign Key, Tvingande, Beroende

En FK finns alltid på många sidan.
[Kund]-----E[telefon]
KUND     TELEFON

kundID     telefonID, telefonnummer, kundID

Om man vill ha en sammansatt nyckel så måste vi sätta ett beroende eller tvingande. | eller B. Nu får vi att telefon har två stycken PK kundID och telefonID.
Detta är bra eftersom om man har väldigt många kunder så indexeras KundID först och alla telefonnummer ifrån en viss kund kommer efter varandra.



[Kund]-B----E[telefon]
KUND     TELEFON

kundID    kundID,telefonID,telefonnummer

Egenrelation
En egenrelation när ett objekt relaterar till sig själv.
DVS en rad i tabellen relaterar till en annan eller till sig själv.













Här ser man att PersonalID finns på två ställen. Tor är chefen och det finns två personer under honom. Monica och snobben. Snobben är även distriktschef och har en säljare Danne under sig.

Matris
En matris är relaterad till sig själv genom en många till många relation.








Såhär ser tabellen ut.

torsdag 12 november 2009

Datamodellering

I databas modellering skapar man en modell över heladatabasen med dess objekt, attribut och relationer.

Datamodellering består av tre stycken modeller.

1. Konceptuell modell - ska återspegla verksamheten / verkligheten
2. Logisk modell - En teoretisk modell som bygger på konceptuella modellen.
3. Fysisk modell - En praktisk modell som är anpassad till den verkliga databashanteraren.


Konceptuell modell.
- Identifiera objekt som är viktiga för verksamheten. (Kund, Artiklar, Faktura)
- Identifiera Relationerna (Se bilden)
- Identifiera Attributen tex. Fält, egenskaper (Telefonnummer, namn, address, antal, pris osv)
- Identifiera Nycklar (Primary key, alla tabeller behöver en unik nyckel för varje rad)
- Tabellexempel med data (kundid=1, namn=Pelle Pellsson,Adress=Kaaatan2) se även till att det hänger ihop genom Primary key och Foreign key.

0 - Frivillig (En kund behöver inte ha en telefon)
1 - Tvingande (En telefon måste gå till en kund)
B - Beroende (Samma karaktär som tvingande)









0. En kund behöver inte ha en telefon.
1. En telefon måste ha en kund.
B. Ett underliggande objekt ifrån kund som kan innehålla Kontaktpersoner.

Atomära fält = fält med endast en sammanhängande information
Delbart fält = fält som innehåller kanske för och efternamn

Logisk Modell
- Objektifiering: rita om alla relationsobjekt till objekt och skapa attribut i dem (vänd på gafflarna)
- Normalisering: Gå igenom normaliserings reglerna.

Normaliserings Regler:
nr1. alla objekt ska ha en unik nyckel (Primary key)
nr2. Varje egenskap ska bero på hela nyckeln
nr3. En egenskap får endast bero på nyckeln. Det får inte förekomma några inbördes relationer.
nr4. En egenskap får endast finnas en gång i en tabell annars växer tabellen i sidled. (tex telefonnummer ska endast finnas i en kolumn. [Kundid][telefonnummer][telefontyp])

Fysisk Modell
- Generalisering Ta bort tex. telefon och döp den till kontakt så kan man ha epost, telefon, fax och allt möjligt i den. skapa sedan en relation med en typ tabell så man vet vilken typ det är.
- Denormalisering (se om vissa normaliseringar kan tas bort, kräver bra argument) behåll sådana saker som man endast kan välja vissa av. tex Moms objekt.
- Optimering radvis/kolumnvis delegering/sammanslagning
- Indexering (se vilka tabeller som ska indexeras för att göra sökning snabbare)
- Tabellprecisering (Bestäm datatyp, Namn=text(antal tecken), Telefon=text/nummer?(antal?))

Optimering
Optimera data genom att kanske skapa två tabeller, KundA och KundB. Kund B kanske innehåller data som inte används så ofta. Eller om tabellen blir väldigt bred med mycke information. Man kan även separera publik data och säkerhetskänslig data.
Man kan även dela upp tabeller i Aktuell samt gammal info. (En tabell per år)
Fördelar: Korta tabeller ger snabb tillgänglighet, lätt att organisera arkivering av gammal data
nackdelar: Måste byta tabeller, svårare att göra statistik över flera tabeller.

Indexering
-Oindexerat (heap) långsamt
- indexerat (sorted/hash) snabbt
Vilka tabeller ska indexeras? Genom att indexera tabeller blir sökningen snabbare. Om man indexerar för många tabeller blir det segt så det gäller att välja vilka tabeller som ska indexeras.
Index-Sekventiell access metod
indexera tex namn och få fram en lista på namn och med hjälp av ID som hör ihop med namn går det snabbt att hitta till rätt post.
Balanserat träd (B tree)
Objekt delas upp i små segment som ett träd och snabbar upp sökning för att den slipper gå igenom hela databaslistan för att hitta rätt rad. Exempel på Btree
Sammansatt PK/FK
man kan sätta in Primary Key och Froeign key i en och samma tabell för att få snabbare sökning.


Tabellprecisering
vilka olika datatyper ska man använda?
Namn = varchar(50)
Kundid = Int
Organisationsnummer = C(11)
ort = Varchar
Postnummer = Int
Betaldatum = Date
Antal = SmallInt
MomsID = Smalint
Moms = Decimal (2,2)

Databasintroduktion - Del 2

Datamodellering
En datamodell använder man för att skapa en persistent databas. Det vill säga allting i databasen hänger ihop med varandra. Det viktiga är att databasen innehåller de data som verksamheten kräver. Om databasen är felmodellerad så finns det risk för att den kraschar.

Utvecklingsprocess för datamodellering
När man skapar en datamodell måste man ta hänsyn till alla olika avdelningar som finns i företaget.
Tex kanske ett fjärrvärme företag inte bara behöver ett kundregister, artikelregister samt fakturaregister som kanske en spelbutik skulle klara sig med. Man måste underhålla ledningar, motionera ventiler, köpa in bränsle ifrån leverantörer, elförbrukning, värmeförbrukning av kund osv.

Systemutvecklingsmetoder.
När man utvecklar system försöker man alltid använda sig av standardiserade modeller eftersom det oftast är flera personer med och utvecklar systemet. När man utvecklar system vill man tala samma språk och använda en beprövad metod så man vet att det kommer fungera i slutendan.

olika metoder är: JSD, SASD, Prototyping, ISAC, Direct SVEA, SIS-RAS, PPR, Datamodellering

livscykelmodell
En livscykelmodell är en modell för systemutveckling som innehåller alla faser ifrån ide, till avveckling av ett system.
Datamodellering spänner över faserna analys och utformning/design i livscykelmodellen.
1. Verksamhets analys
2. Informations analys
3. Principell utformning av teknisk lösning
4. utformning av utrustningsanpassad teknisk lösning.

1-4 = Verksamhetsperspektive
2-4 = Databasperspektive

Resultat av analysfasen är en användarkfravspecifikation. AKS
Utformningsfasen säger sig självt. där skapar man databasen.

När man ska hämta data ifrån databasen avnänds ett frågespråk tex SQL, Structured Query Language.

onsdag 11 november 2009

Databasintroduktion - Del 1

En databas består av tabeller bestående av kolumner och rader.

DATABASLAGER
---------------------
Presentationslager - XHTML, Javascript, CSS osv.
Användargränssnittslager - ASP.Net
Affärslager - C# Klasser med bl.a. validering av data
Dataåtkomstlager - C#-klasser med ADO.Net
Datalager - Databas med tabeller, vyer, lagrader procedurer.
---------------------

Om flera användare ändrar samma värde i en databas samtidigt blir det en deadlock.

En databas har tabeller som är relaterade (kopplade) till varandra och bildar en samling data.
Tex. Ett användarID kan finnas i en tabell med adresser medan den även kan finnas i en telefontabell. På detta sätt kopplas användare och telefonnummer ihop.
När ett tex. ett medlemsnummer finns på två olika ställen kallas detta relationer.


Det första man gör när man ska skapa en databas är Datamodellering.

  • En databas består av en eller flera tabeller.
  • En tabell består av flera rader/poster/Records.
  • En databas består av en eller flera poster.
  • En post består av ett eller flera fält/data/kolumner.
  • Ett fält innehåller ett eller flera tecken.
  • Kolumner kan inte ha samma namn.
  • Ett tecken består av 1 byte = 8 bitar.
Bitar är viktigt att tänka på när du ska bestämma datatyp.

Normalt sätt brukar man ha ett nyckelfält(Kolumn)/Keycolumn i varje tabell. Dessa innehåller Primary keys som är unika för varje rad(post).

Om det inte är ett nyckelfält så är det ett descriptor column(beskrivarfält). Dessa har beskrivande egenskaper och flera kan ha samma värde. Tex. under Adresslistan kan flera personer ha samma förnamn men dessa personer kan inte ha samma Primary Key eller medlemsID.

Primary Key
Detta är ett värde som endast kan finnas på ett ställe i tabellen. Unik!
Denna används för att koppla ihop tabeller.

Foreign Key
Detta är en nyckel som hänvisar till en primär nyckel i en annan tabell.

Var finns databaser?
LADOK, LDAP, Active Directory, Skattekontor, Banker, Butiker, Uthyrningsfirmor, Kommunitys. Allt består av databaser för att komma ihåg och kunna binda ihop olika information med varandra på ett snabbt och enkelt sätt.

DBMS - DataBase ManagementSystem
--------------------------------------------
dBASE
Microsoft SQL server
Microsoft Access
MySQL
PostgreSQL
Oracle
Visual FoxPRO

Administrationsgränssnitt
--------------------------------
MySQL Query Browser
Management Studio (MS SQL server)