Wkuno

Hvordan lage en relasjonell datamodell

Oppgave med å skape en bedrift datamodell? Trenger du å bygge en relasjonsdatabase som kan huse terabytes med data?

Trinn

Hvordan lage en relasjonell datamodell. Ikke bekymre deg om bord ennå.
Hvordan lage en relasjonell datamodell. Ikke bekymre deg om bord ennå.
  1. 1
    Ikke bekymre deg om bord ennå. Det er tydelig at du bygger en database, og databaser (relasjonsdatabaser de likevel) er primært består av tabeller, som er laget av rader og kolonner (tupler og attributter hvis du er virkelig inn i det).
  2. 2
    Bekymre seg for foretakets relasjoner. Ditt første mål er å kartlegge forhold som ulike Business Objects har. Dette er den "logisk modellering" delen. Den "fysiske modellen" er den faktiske gjennomføringen. Forvirre / kombinere de to ved fare.
  3. 3
    Kravene er vanskelig å få og smertefull. En talentfull analytiker på dette tidspunktet ville være sendt fra himmelen.
  4. 4
    Vær forberedt på å føre en solo krig, med bare du er dedikert til kvalitet normalisering. De fleste databaser er biter av søppel fordi folk som utforming dem er lat og "bare ønsker å få noe der ute. Vi kan alltid fikse det senere." Ja, ikke sant.
  5. 5
    Når det er på tide å skrive tabeller, konsentrere seg om oppslag og type bord (postnummer, statuser, produktkategorier, etc). Du trenger dem for utenlandske viktige relasjoner på "ekte" tabellene. Plus, det gir deg litt varme opp før du kommer inn i kjernen transaksjonsbaserte tabeller.
  6. 6
    Som en tommelfingerregel: lagrer ikke data som kan utledes fra andre felt. Hvis du vet fødselsdato og noen startdato, så du også vite alderen på startdato, så ikke inkludere denne aldersgruppen i tabellen.
  7. 7
    Ingen nuller. En nullverdi representerer en udefinert egenskap av en enhet. Hvis enhetene kan ha eller ikke ha en bestemt egenskap, da den må håndteres via en skjærer tabell.
  8. 8
    Selvmotsigelse NULL-verdier er i seg selv nyttig å identifisere attributter som enda ikke er blitt befolket av brukere. Dette er spesielt nyttig når en bruker trenger å velge en standard verdi for å bestemme riktige forretningsregler til å søke. Sak 2 hvordan ville du utforme en adresse bordet der Adresse1 ble befolket og Adresse2 var ikke påkrevd, men hvis Adresse2 var befolket det må samsvare med virksomheten reglene i feltet. Sikker på at du kan misligholde en tom plass, dette er bedre enn å vite at brukeren ikke redigere feltet? Prøv tredje normale form på en internasjonal destinasjon... Kan det gjøres nok, men se på kompleksiteten av restrukturering av data på en meningsfull måte.
  9. 9
    Null / ikke NULL sjekke eventuelle databasen fora og dette er et hett tema talsmenn på begge sider fordeler / ulemper for hver.
    • Men alle er enige om at du aldri skal tillate nuller i viktige variabler. Dette er områder som blir brukt til å identifisere en rekord unikt, for eksempel en kunde identifikasjonsnummer.
    • Null skolen sier at du bør bruke nuller fritt i alle andre felt. For eksempel kundene ikke er pålagt å ha en mobiltelefon, og heller ikke til å fortelle deg sine tall. Ved hjelp av en null og ingenting, men en null er det mest effektivt å registrere at mobiltelefonen ikke er tilgjengelig.
    • Hvis det er veldig viktig å vite hvorfor det ikke der det er bedre å innføre en ny variabel som sier årsaken, i motsetning til å innføre fancy koder som skal lagres i plassholderen for celle telefonnumre. Være tilbakeholdne med å legge til felt som dette, fordi a) kunden er heller ikke forpliktet til å fortelle grunnen til at han ikke gir sin mobiltelefon nummer, og heller ikke gjør dette spørsmålet en hyggelig samtale, han er heller ikke sannsynlig å fortelle sine grunner spontant, og b) ingen vil noensinne se på dem på grunn av a). Hvorfor mangler variabler som regel bare kaste bort tid.
    • Vær oppmerksom på at ja / nei-variabler (boolske) ofte ikke kan holde en null. Derfor de ofte inneholder unyttig informasjon, for eksempel "enten han var republikansk, eller han nektet å svare".
  10. 10
    Få komfortabel med skjærer (mange til mange) tabeller. Du vil bruke dem overalt hvis du bygget ting riktig. Ett eksempel kan være en high school database hvor ett bord er en liste over lærere og en annen for elevene. Studentene har mer enn en lærer, og lærerne har mer enn én student, så skjærer tabellen, separat fra "lærer" og "student", ville ha to kolonner: fremmednøkler peker på begge disse to. Den primære nøkkel vil da være en kombinasjon av de to.
  11. 11
    Bruk en god navne-konvensjonen. For fakturaer, legg dem i en tabell kalt "faktura". Produkter går i "produkt". Den skjærer ville være "invoiceProduct", eller "productInvoice", avhengig av hvilket bord er virkelig midten av forholdet.
  12. 12
    Hvis du er nødt til å formere seg eller log shipping, prøv å ha det satt opp som du utvikler slik at du kan se hvordan det fungerer.
  13. 13
    Indre sammenføyninger er stor, men det er nok mye av LEFT Ytre BLI uttalelser som du kommer til å gjøre også. Bli vant til de forskjellige Bli med uttalelser (unntatt UNION).
  14. 14
    Hvis du har å forholde seg til et eldre program, bygge dine skjema uavhengig av sin (ikke engang ser på det). Fokus på forretningsregler og relasjoner som det prøver å håndheve, men du kan bli distrahert hvis du ser på den måten at noen setter det opp. Se trinn 4.
  15. 15
    Migrerer fra gamle systemer til en strammere modell med riktig normalisering er vanskelig, men kan gjøres litt mer håndterlig ved å bruke midlertidige tabeller for import. Også holde orden på arven IDer for folk å søke etter.

Tips

  • Ikke forvent replikering, log shipping, eller speiling å jobbe når du går i produksjon. Utvikle og teste med det fra starten. Gjør det til en del av søknaden din.
  • Sikkerhetskopier er viktig i utviklingen også. Sørg for at de er minst nattlig. Verifisere dem hver uke for å sikre at du ikke mister måneder igjen av arbeid (og muligens jobben) hvis det er en massiv hardware havari.
  • I forhold til foretakets relasjoner, som et eksempel, en klient kan ha mange telefonnumre. En klient kan også ha mange kontakter, og hver av disse kontaktene kan ha mange telefonnumre. En faktura kan bare være tilknyttet én klient, imidlertid. Det er én konto rep som kan tildeles en klient, bortsett fra i enkelte tilfeller der det er to, osv. Dette er typer av ting du trenger å kartlegge godt før du skriver en eneste linje med sql.
  • Siden du definerer absolutte relasjoner, er en god måte å få spørsmål fra motvillige til å stille ting som "Så det er helt sant at det bare kan være en klient på en faktura?" Spørsmål som dette har en tendens til å påkalle en reaksjon i folket.
  • La "s" av tabellen navn ("faktura" tabellen), det er forstått at siden det er en database er det en god sjanse for at det vil være mer enn en faktura der inne.
  • Fleksibilitet og kraft fra en relasjonell modell er tankene boggling i forhold til en flatere struktur.
  • Det er noen svært spesielle tilfeller der du trenger å denormalize tabeller for ytelse grunner. Men det er lett å gjøre, fokusere på den harde delen som er riktig normalisering.

Advarsler

  • Datamodellering er en kritisk ferdighet, og svært få mennesker bygge relasjonsdatabaser er noe bra på det.
  • Ikke billig ut og gjøre dårlig arbeid bare fordi det er enklere. Hvis de ønsket søppel, ville de ha leid noen andre.
  • Hvis du gjør det billig ut (nullverdier, denormalized tabeller for dårlige grunner), vil det ha direkte og reell konsekvenser (foreldreløse, simpelt dataintegritet, tiltrer wont arbeide, etc).
  • Hvis du ikke normalisere riktig så rapportene gjort fra databasen data vil noen ganger være helt feil, og sjefen din vil bli veldig opprørt.