Beste svaret
En primærnøkkel er en spesiell begrensning på en kolonne eller et sett med kolonner. En primær nøkkelbegrensning sikrer at kolonnene som er angitt slik, ikke har NULL-verdier, og at hver verdi er unik. Fysisk implementeres en primærnøkkel av databasesystemet ved hjelp av en unik indeks, og alle kolonnene i primærnøkkelen må ha blitt erklært IKKE NULL. En tabell kan bare ha en primærnøkkel, men den kan være sammensatt (bestå av mer enn en kolonne).
En surrogatnøkkel er hvilken som helst kolonne eller et sett med kolonner som kan erklæres som primærnøkkel i stedet for som en «ekte» eller naturlig nøkkel . Noen ganger kan det være flere naturlige nøkler som kan erklæres som primærnøkkel, og disse kalles alle kandidatnøkler . Så et surrogat er en kandidatnøkkel. Et bord kan faktisk ha mer enn en surrogatnøkkel, selv om dette ville være uvanlig. Den vanligste typen surrogatnøkkel er et inkrement heltall, for eksempel en auto\_increment kolonne i MySQL, eller en sekvens i Oracle, eller en identitetskolonne i SQL Server.
Fordeler med å bruke surrogatnøkler
Som nevnt ofrer en surrogatnøkkel noe av den opprinnelige konteksten til dataene. Det kan imidlertid være ekstremt nyttig for analytiske formål av følgende grunner:
- Surrogatnøkler er unike. Fordi surrogatnøkler er systemgenerert, er det umulig for systemet å opprette og lagre en duplikatverdi.
- Surrogatnøkler bruker ensartede regler for alle poster. Surrogatnøkkelverdien er resultatet av et program som skaper den systemgenererte verdien. Enhver nøkkel som opprettes som et resultat av et program, vil bruke ensartede regler for hver post.
- Surrogatnøkler tåler tidstesten. Fordi surrogat nøkler mangler noen kontekst eller forretningsbetydning, det vil ikke være behov for å endre nøkkelen i fremtiden.
- Surrogatnøkler tillater ubegrensede verdier. Sekvensielle, tidsstempel og tilfeldige taster har ingen praktiske grenser for unike kombinasjoner.
Svar
De fleste databaser i dag er virkelig databasestyringssystemer (DBMS). Disse består av to komponenter:
- databasen riktig , som lagrer dataene, sammen med metadata, som relasjoner, begrensninger , etc …
- brukergrensesnittet, der utvikleren og / eller databaseadministratoren skriver inn SQL-kommandoer.
De fleste databaser leveres med et kommandolinjeverktøy for grensesnitt med databasen. For eksempel gir MySQL et enkelt SQL-skall med redigeringsfunksjoner for inngangslinjer. Den støtter interaktiv og ikke-interaktiv bruk. Når de brukes interaktivt, presenteres søkeresultater i et ASCII-tabellformat. Når det brukes ikke-interaktivt (for eksempel som et filter), blir resultatet presentert i tabulaseparert format. Utdataformatet kan endres ved hjelp av kommandoalternativer.
For å påkalle MySQL-skallet fra ledeteksten fra kommandotolken din, skriver du inn noe som følger:
shell> mysql --user=user\_name --password db\_name
Enter password: your\_password
Når du er logget på databasen din, kan du utføre kommandoer, for eksempel et SELECT-spørsmål , mot det:
shell>SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
Du kan også legge SQL-setningene dine i en fil og så be mysql om å lese innspillene fra den filen. For å gjøre det, vil du opprette en tekstfil som inneholder utsagnene du ønsker å utføre. Påkall deretter mysql som vist her:
shell> mysql db\_name
Noen databaseleverandører tilbyr også GUI-klienter og verktøy, i tillegg til en kommando- linjeklient. I tråd med MySQL er GUI-klienten MySQL Workbench. MySQL Workbench er tilgjengelig på Windows, Linux og Mac OS X og er rettet mot databasearkitekter, utviklere og DBAer. Det gir datamodellering, SQL-utvikling og omfattende administrasjonsverktøy for serverkonfigurasjon, brukeradministrasjon, sikkerhetskopiering og mye mer.
Andre verktøy
Foruten verktøy som tilbys av databaseleverandørene selv, er det mange andre open source og kommersielle tilbud tilgjengelig for alle de populære databasetyper og skytjenester. Når det gjelder forskjeller, passer både gratis og kommersielle produkter godt til deres formål.Hvilken du går med vil vanligvis være mer en funksjon av hvilken type arbeid du gjør i stedet for brukervennlighet.
Etter å ha jobbet ganske mye med både åpen kildekode og kommersielle produkter, fant jeg ut at jeg gradvis graviterte mot sistnevnte, ettersom arbeidseffektivitet ble viktigere for mitt arbeid som IT-konsulent. Min personlige oppfatning er at kommersielle produkter kan gjøre deg mer produktiv ettersom de effektiviserer vanlige oppgaver for å øke effektiviteten.
Som et resultat har jeg brukt Navicat Premium databaseutvikling og administrasjonsklient i flere år nå. Selv om Navicat lager klienter for alle populære databaser, er Navicat Premium det eneste verktøyet jeg har brukt som er i stand til å koble til MySQL, MariaDB, MongoDB, SQL Server, Oracle, PostgreSQL og SQLite databaser samtidig fra en enkelt applikasjon. Det er også fullt kompatibelt med skydatabaser som Amazon RDS, Amazon Aurora, Amazon Redshift, Microsoft Azure, Oracle Cloud og Google Cloud.
Her er et skjermbilde av hovedskjermen i Windows:
Alle Navicat-produkter er tilgjengelige for Linux og macOS samt Windows.
Spesielt hjelper Spørreredigereren meg med å skrive mine spørsmål raskere ved å inkludere syntaksfremheving, gjenbrukbare og tilpassbare kodebiter, så vel som automatisk forslag, avbildet nedenfor:
Den har til og med en spørrebygger, som er til stor fordel for mindre erfarne brukere. Den lar deg lage og redigere spørsmål visuelt uten praktisk kunnskap om SQL!
Håper det hjelper!
Med vennlig hilsen,
Adam