Lave en SQL tabel

SQL database lagrer data ind i tabeller. Her vil vi kigge på nogle simple regler vedr. tabel design:

 

  • Navn
  • Model
  • Data type og NULLability
  • Primary key constraint: række skal ikke dupliceres
  • Foreign key Constraint

 

Tabel navn skal være beskrivende om data det skal indeholde. For eks. CustomerContactData er klar, koncis tabel navn, mens Worktabel010 er ikke. Tabel navn kan ikke være længere end 128 karakterer og skal omfatte regler af SQL Server identifiers.

 

Der er forskellige opfattelse af hvad der er gode navn konvetioner. Vi anbefaler bare at du er konsistent i dit valg. For eks:

 

  • Ental vs flertal, for eks. Bil vs Biler
  • Capitalization, for eks. CustomerContactData (god) vs customercontactdata (dårlig) vs CUSTOMERCONTACTDATA (dårlig)
  • Brug af underscore CustomerContactData vs Customer_Contact_Data
  • Brug af præfiks CustomerContactData vs tbl_CustomerContactData (anbefales ikke)

Data inde i en tabel er lavet af attributer, data stykker, som vi samler om et bestemte ting. For at kunne designe god tabel, skal vi først lave model af vores data. Her er eksemplar af data vi er initeresseret om besøgende af en websted:

 

  • Fornavn
  • Efternavn
  • Alder
  • Køn
  • Post adresse
  • E-mail
  • Brugernavn
  • Password
  • Dato og tid

Når vi har liste over attributer, kan vi lave dem om til kolonner:

 

CREATE TABLE Visitors (

        VisitorID

        Fornavn

        Efternavn

        Alder

        Koen

        PostAdresse

        Email

        Brugernavn

        Password

        DatoOgTid

)

 

Nu har vi kolonner (attributer) af vores tabel. Hver række i tabel representere et besøg.

 

Når vi har defineret hvad vi vil meget gerne vide om vores besøgende, næste skridt vil være at definere typen af data for hver af vores attributer. Hver data type bruge forskelige rækkevidde samt forskelige disk plads. Lettest vil være at definere alle attributer som string type (varchar), men det vil ikke være god ide, pga. begrænset funktionalitet, brug af ekstra disk plads og langsom SQL server. Derfor skal vi brug data type som er tilpasset til data som vi skal samle op. Her er så vores eksemplar med tilpassende attribut type.

 

CREATE TABLE Visitors (

        VisitorID INT(1,1),

        Fornavn VARCHAR(50),

        Efternavn VARCHAR(50),

        Alder VARCHAR(10),
        Koen VARCHAR(1),

        PostAdresse VARCHAR(255),

        Email VARCHAR(50),

        Brugernavn VARCHAR(50),

        Password VARCHAR(50),

        DatoOgTid SMALLDATETIME,

)

 

NULL i SQL verden betyder at attribut er tom, dvs. ikke nogle data er til sted. Husk at 0 er ikke et NULL! Vi skal også definere skal vores attributer tillade at være tom eller der skal være data. Her bruge vi NULL og NOT NULL, så vores table kommer at se ud såden:

 

CREATE TABLE Visitors (

        VisitorID INT(1,1) NOT NULL,

        Fornavn VARCHAR(50) NOT NULL,

        Efternavn VARCHAR(50) NOT NULL,

        Alder VARCHAR(10) NULL,
        Koen VARCHAR(1) NOT NULL,

        PostAdresse VARCHAR(255) NULL,

        Email VARCHAR(50) NOT NULL,

        Brugernavn VARCHAR(50) NOT NULL,

        Password VARCHAR(50) NOT NULL,

        DatoOgTid SMALLDATETIME NOT NULL,

)

 

Når vi samler data op, skal vi have mulighed for at identificere bestemte bruger. For at kunne gøre det, skal vi bruge Primary key constrain. Her er eksemplar hvordan man bruge Primary key i table design:

 

CREATE TABLE Visitors (

        VisitorID INT(1,1),

        Fornavn VARCHAR(50),

        Efternavn VARCHAR(50),

        Alder VARCHAR(10),
        Koen VARCHAR(1),

        PostAdresse VARCHAR(255),

        Email VARCHAR(50),

        Brugernavn VARCHAR(50),

        Password VARCHAR(50),

        DatoOgTid SMALLDATETIME,

        CONSTRAINT PK_ID PRIMARY KEY NONCLUSTERED (ID)

)

 

For at kunne koble en tabel med en anden tabel og kunne koble data sammen, skal vi bruge Foreign key constraint. Her er eksemplar hvordan man bruge Foreign key i table design:

 

CREATE TABLE Visitors (

        VisitorID INT(1,1),

        Fornavn VARCHAR(50),

        Efternavn VARCHAR(50),

        Alder VARCHAR(10),
        Koen VARCHAR(1),

        PostAdresse VARCHAR(255),

        Email VARCHAR(50),

        Brugernavn VARCHAR(50),

        Password VARCHAR(50),

        DatoOgTid SMALLDATETIME,

        CONSTRAINT PK_ID PRIMARY KEY NONCLUSTERED (ID),

        CONSTRAINT FK_VisitID FOREIGN KEY (VisitorID) REFERENCES Visitor (VisitorID)

)


Emir Sefic, - siden er sidst opdateret d.13. september 2010
LIFE-IT-Bülowsvej 17, 1.-1870 Frederiksberg C-Tlf: 353 32200-Fax: 353 32368--EAN-nummer: 5790000298303