Relationele SQL Databases


  Share  
|


Denk aan een database die verband houden de spelers in een spel met elkaar (bijvoorbeeld om te bepalen wie was een vriend van elke speler en die was een vijand van elke speler).

Laten we het eerst een tabel maken om de gegevens voor elk van de spelers op te slaan. Let op de toevoeging van een primaire sleutel, waarmee u kunt vertrouwen op het feit dat alle rijen hebben een uniek gebied dat kan worden gebruikt als referentie. Merk ook op dat elke rij van de gegevens in de primaire sleutel moet uniek zijn aan elkaar. Hier is de verklaring die vereist is om onze database (genaamd gamedata) en onze playerdata tafel.

mysql> CREATE DATABASE gamedata; mysql> USE gamedata; mysql> CREATE TABLE playerdata (-> gebruikersnaam CHAR (255) NOT NULL UNIQUE, -> wachtwoord CHAR (255), -> leeftijd INT, -> datecreated TIMESTAMP, -> PRIMARY KEY (gebruikersnaam));

Notice hier hoe we de gebruikersnaam kolom om unieke en ook niet NULL. In eenvoudige termen betekent dit dat zij een waarde moet bevatten, en die waarde mag niet hetzelfde zijn als alle andere gebruikersnaam in andere record in de tabel. Merk ook op dat wij hebben de primaire sleutel van de tabel worden de gebruikersnaam veld, zoals we zullen vooral zoeken op dit gebied, dat ziet u in een ogenblik.

In aanvulling op deze informatie, moeten we ook een manier om vrienden en vijanden te slaan. Dit gebeurt door middel van een koppelen tafel. Een link tabel is eigenlijk gewoon een normale database tafel, maar het belangrijkste doel is om gegevens op enigerlei wijze verband houden of andere om ruimte te besparen en de manier waarop de database toegang heeft tot de informatie te optimaliseren.

Laten we maken twee link tabellen, een voor de betreffende vrienden en een voor de betreffende vijanden van elkaar. Na zijn de verklaringen die nodig zijn om dit te verwezenlijken.

Opmerking

Als link tabellen worden gebruikt, de optimale manier is om INT waarden daar slaan en een ID-veld hebben met auto_increment playerdata in de tabel als primaire sleutel. Het is niet zo leesbaar als u een SELECT, maar het is sneller vanuit uw applicaties. Bij het bijwerken van de naam van een speler, is het niet breken de integriteit van de database. Ook link tafels zijn vaak structuren alleen worden gebruikt als er n bedrag van de betrekkingen van de ene rij naar de andere rijen. Als er altijd maar een relatie (een vriend of vijand), moet een rechtstreeks verband worden gebruikt.

mysql> CREATE TABLE relatefriends (-> speler CHAR (255), -> vriend CHAR (255));

Ook:

mysql> CREATE TABLE relateenemies (-> speler CHAR (255), -> vijand CHAR (255));

Als we nu tonen de tabellen in de database met het volgende commando:

mysql> SHOW TABLES;

... kunnen we zien onze database bevat nu drie verschillende tafels-playerdata onze tafel en de twee link tabellen.

Laten we nu voeg een steekproef van gegevens naar de speler gegevens tafel, zodat we kunnen experimenteren met de link tafels en begrijp de logica van hoe ze effectief te gebruiken. Hier is de verklaring die vereist is om onze steekproef gegevens toe aan het playerdata tabel:

mysql> INSERT INTO playerdata VALUES -> ( 'Andrew', 'qwerty', 20, NULL), -> ( 'Henry', 'letmein', 34, NULL), -> ( 'Sandra', 'dra33', 19 , NULL), -> ( 'John', 'j12d', 23, NULL), -> ( 'Jenny', 'jen123', 34, NULL);

Als wij u alle informatie uit de tabel playerdata nu met het volgende commando:

mysql> SELECT * FROM playerdata

Nu dat we een aantal voorbeeldgegevens hebben, laten we proberen om een aantal relaties tussen de spelers in de database te creëren. Eerste toevoegen aan de tabel relatefriends verband met het feit dat Henry is bevriend met Sandra. Hier is de verklaring die vereist is om deze toe te voegen aan de link tabel:

mysql> INSERT INTO relatefriends VALUES -> ( 'Henry', 'Sandra');

Laten we nu wat meer toe te voegen monster gegevens in zowel de relatefriends en relateenemies link tafels en zien hoe we de gegevens kunnen manipuleren. De twee verklaringen nodig om toe te voegen in de steekproef gegevens hieronder:

Opmerking

Om te voorkomen dat een vriend en vijand op hetzelfde moment, kan een relatie tabel worden gebruikt. Voeg een veld "vijand" vlag, en als deze is ingesteld, betekent dit dat ze vijanden zijn, anders zijn ze vrienden.

mysql> INSERT INTO relatefriends VALUES -> ( 'Andrew', 'Henry'), -> ( 'Andrew', 'John'), -> ( 'Andrew', 'Jenny'), -> ( 'Sandra', ' Jenny ');

En ook:

mysql> INSERT INTO relateenemies VALUES -> ( 'Andrew', 'Sandra'), -> ( 'Henry', 'Jenny'), -> ( 'Henry', 'John'); 

Nu hebben we alle gegevens van onze steekproef, laten we eens kijken of we kunnen achterhalen wie Andrew is bevriend met met behulp van de volgende verklaring:

mysql> SELECT vriend uit relatefriends WHERE speler = 'Andrew';

Wanneer we deze verklaring uit te voeren, geeft de console een lijst van alle spelers die Andrew is bevriend met.

Nogmaals, we kunnen precies hetzelfde doen met de relateenemies link tafel. Zo kunnen we alle vijanden Henry's met de volgende verklaring:

mysql> SELECT vijand uit relateenemies WHERE speler = 'Henry'

Met deze gegevens, als we dan wilden u meer informatie over de vijand Henry dat de gebruikersnaam van Jenny heeft, zou gebruiken we de volgende verklaring:

mysql> SELECT * FROM playerdata WHERE username = 'Jenny';
een artikel afkomstig van George Ionescu


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions