Beste antwoord
Een primaire sleutel is een speciale beperking voor een kolom of set kolommen. Een primaire sleutelbeperking zorgt ervoor dat de aldus aangewezen kolom (men) geen NULL-waarden hebben en dat elke waarde uniek is. Fysiek wordt een primaire sleutel geïmplementeerd door het databasesysteem met behulp van een unieke index, en alle kolommen in de primaire sleutel moeten als NOT NULL zijn gedeclareerd. Een tabel mag maar één primaire sleutel hebben, maar deze kan een samengesteld zijn (bestaande uit meer dan één kolom).
Een surrogaatsleutel is elke kolom of reeks kolommen die kan worden gedeclareerd als de primaire sleutel in plaats van een “echte” of natuurlijk sleutel . Soms kunnen er meerdere natuurlijke sleutels zijn die kunnen worden gedeclareerd als de primaire sleutel, en deze worden allemaal kandidaat-sleutels genoemd. Een surrogaat is dus een kandidaatsleutel. Een tafel kan in feite meer dan één surrogaatsleutel hebben, hoewel dit ongebruikelijk zou zijn. Het meest voorkomende type surrogaatsleutel is een oplopend geheel getal, zoals een auto\_increment-kolom in MySQL, of een reeks in Oracle, of een identiteitskolom in SQL Server.
Voordelen van het gebruik van surrogaatsleutels
Zoals gezegd, offert een surrogaatsleutel een deel van de oorspronkelijke context van de gegevens op. Het kan echter om de volgende redenen uitermate nuttig zijn voor analytische doeleinden:
- Surrogaatsleutels zijn uniek. Omdat surrogaatsleutels zijn door het systeem gegenereerd, is het onmogelijk voor het systeem om een dubbele waarde te creëren en op te slaan.
- Surrogaatsleutels passen uniforme regels toe op alle records. De surrogaatsleutelwaarde is het resultaat van een programma dat de door het systeem gegenereerde waarde creëert. Elke sleutel die als resultaat van een programma wordt gemaakt, past uniforme regels toe voor elk record.
- Surrogaatsleutels doorstaan de tand des tijds. Omdat surrogaat sleutels hebben geen context of zakelijke betekenis, het is niet nodig om de sleutel in de toekomst te wijzigen.
- Surrogaatsleutels staan onbeperkte waarden toe. Opeenvolgende, tijdstempel en willekeurige sleutels hebben geen praktische limieten voor unieke combinaties.
Antwoord
De meeste databases zijn tegenwoordig in feite databasebeheersystemen (DBMS). Deze bestaan uit twee componenten:
- de database proper , die de gegevens opslaat, samen met metadata, zoals relaties, beperkingen , etc …
- de gebruikersinterface, waar de ontwikkelaar en / of databasebeheerder SQL-opdrachten invoert.
De meeste databases worden geleverd met een opdrachtregelhulpprogramma voor de interface met de database. MySQL biedt bijvoorbeeld een eenvoudige SQL-shell met bewerkingsmogelijkheden voor invoerregels. Het ondersteunt interactief en niet-interactief gebruik. Bij interactief gebruik worden de queryresultaten gepresenteerd in een ASCII-tabelindeling. Bij niet-interactief gebruik (bijvoorbeeld als filter), wordt het resultaat gepresenteerd in door tabs gescheiden indeling. Het uitvoerformaat kan worden gewijzigd met behulp van commando-opties.
Om de MySQL-shell op te roepen vanaf de prompt van je commando-interpreter, zou je zoiets als het volgende invoeren:
shell> mysql --user=user\_name --password db\_name
Enter password: your\_password
Eenmaal ingelogd bij uw database, kunt u opdrachten uitvoeren, zoals een SELECT-zoekopdracht , ertegenaan:
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 |
+---------+--------+-------+
U kunt uw SQL-instructies ook in een bestand plaatsen en vertel mysql dan om zijn invoer uit dat bestand te lezen. Om dit te doen, maakt u een tekstbestand aan dat de instructies bevat die u wilt uitvoeren. Roep vervolgens mysql aan zoals hier getoond:
shell> mysql db\_name
Sommige databaseleveranciers bieden ook GUI-clients en hulpprogrammas aan, naast een opdracht- lijn cliënt. In overeenstemming met MySQL, is de GUI-client MySQL Workbench. MySQL Workbench is beschikbaar op Windows, Linux en Mac OS X en is bedoeld voor databasearchitecten, ontwikkelaars en DBAs. Het biedt gegevensmodellering, SQL-ontwikkeling en uitgebreide beheertools voor serverconfiguratie, gebruikersbeheer, back-up en nog veel meer.
Andere tools
Naast tools die door de databaseleveranciers zelf worden aangeboden, zijn er vele andere open source en commerciële aanbiedingen beschikbaar voor alle populaire databasetypen en cloudservices. In termen van verschillen zijn zowel gratis als commerciële producten zeer geschikt voor hun doel.Welke je kiest, zal meestal meer een functie zijn van wat voor soort werk je doet dan van bruikbaarheid.
Na behoorlijk wat met zowel open source als commerciële producten te hebben gewerkt, merkte ik dat ik geleidelijk naar de laatstgenoemde, omdat werkefficiëntie belangrijker werd in mijn werk als IT-consultant. Mijn persoonlijke mening is dat commerciële producten u productiever kunnen maken omdat ze veelvoorkomende taken stroomlijnen om de efficiëntie te vergroten.
Als gevolg hiervan heb ik Navicat Premium gebruikt database-ontwikkeling en admin-client sinds enkele jaren. Hoewel Navicat clients maakt voor alle populaire databases, is Navicat Premium de enige tool die ik heb gebruikt en die tegelijkertijd verbinding kan maken met MySQL-, MariaDB-, MongoDB-, SQL Server-, Oracle-, PostgreSQL- en SQLite-databases vanuit één enkele applicatie. Het is ook volledig compatibel met clouddatabases zoals Amazon RDS, Amazon Aurora, Amazon Redshift, Microsoft Azure, Oracle Cloud en Google Cloud.
Hier is een screenshot van het hoofdscherm in Windows:
Alle Navicat-producten zijn beschikbaar voor Linux en macOS en voor Windows.
In het bijzonder helpt de Query Editor me bij het schrijven mijn zoekopdrachten sneller door syntaxisaccentuering, herbruikbare en aanpasbare codefragmenten op te nemen, evenals automatische suggestie, hieronder afgebeeld:
Het heeft zelfs een querybuilder, die van groot voordeel is voor minder ervaren gebruikers. Hiermee kunt u zoekopdrachten visueel maken en bewerken met praktisch geen kennis van SQL!
Hoop dat het helpt!
Met vriendelijke groet,
Adam