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.

Inga kommentarer:

Skicka en kommentar