Verwandtschafts-Sql Datenbanken
Denken Sie an eine Datenbank, die die Spieler in
einem Spiel bis eins andere bezog (zum Beispiel, festzustellen wem ein
Freund jedes Spielers waren und das ein Feind jedes Spielers war).
Lassen Sie uns zuerst herstellen eine Tabelle, um die
Daten für jeden der Spieler zu speichern. Beachten Sie die
Hinzufügung eines Primärschlüssels, der Ihnen erlaubt, auf die
Tatsache zu bauen, daß alle Reihen ein einzigartiges
auffangen lassen, das als Hinweis verwendet werden kann.
Merken Sie auch, daß jede Reihe von Daten im Primärschlüssel
bis eine andere einzigartig sein muß. Ist hier die Aussage, die
erfordert wird, um unsere Datenbank (genannt gamedata) und unsere
playerdata Tabelle herzustellen.
mysql > VERURSACHEN DATENBANK gamedata; mysql >
GEBRAUCH gamedata; mysql > VERURSACHEN TABELLE playerdata (- >
username CHAR(255) EINZIGARTIGES NICHT UNGÜLTIGES, - > datecreated
Kennwort CHAR(255), - > das Alter INTERN, - > ZEITSTEMPEL, - >
PRIMÄRKEY(username));
_ beachten hier wie wir einstellen d username Spalte zu
EINZIGARTIG und auch NICHT UNGÜLTIG. In den einfachen
Bezeichnungen bedeutet dieses, daß es einen Wert enthalten muß und
daß Wert derselbe wie kein anderes username in irgendeiner anderen
Aufzeichnung in der Tabelle sein darf. Merken Sie auch, daß wir
den Primärschlüssel der Tabelle eingestellt haben, um das username
zu sein auffangen, da wir hauptsächlich auf diesem
auffangen suchen werden, das Sie in einen Moment sehen.
Zusätzlich zu diesen Informationen benötigen wir auch
irgendeine Weise, Freunde und Feinde zu speichern. Dieses wird
mittels einer Verbindung Tabelle getan. Eine Verbindung Tabelle ist
eine normale Datenbanktabelle wirklich gerecht, aber sein Hauptzweck
ist, Daten oder andere auf gewisse Weise zu beziehen, um Raum zu
konservieren und die Weise zu optimieren die Datenbankzugriffe die
Informationen.
Lassen Sie uns zwei Verbindung Tabellen, eine für die in
Beziehung der Freunde und eine herstellen für Feinde miteinander
beziehen. Das Folgen sind die Aussagen, die angefordert werden,
um dieses zu vollenden.
|
Anmerkung |
Wenn Verbindung Tabellen benutzt werden, soll die
optimierte Weise INTERNE Werte dort speichern und eine Identifikation
mit auto_increment in der playerdata Tabelle als Primärschlüssel
auffangen lassen. Sie ist, nicht da lesbar, wenn Sie
ein AUSERWÄHLTES durchführen, aber es von innerhalb Ihren
Anwendungen schneller ist. Wenn es den Namen eines Spielers
aktualisiert, bricht sie nicht die Vollständigkeit der Datenbank.
Auch Verbindung Tabellen sind häufig die verwendet zu werden
Strukturen,, nur wenn es n Menge Relationen von einer Reihe zu anderen
Reihen gibt. Wenn es immer nur eine Relation (ein Freund oder
Feind) gibt, sollte eine direkte Verbindung verwendet werden. |
mysql > VERURSACHEN TABELLE relatefriends (- > Spieler
CHAR(255), - > Freund CHAR(255));
Auch:
mysql > VERURSACHEN TABELLE relateenemies (- > Spieler
CHAR(255), - > Feind CHAR(255));
Wenn wir jetzt darstellen, befehlen die Tabellen in der
Datenbank mit dem folgenden:
mysql > ERSCHEINEN-TABELLEN;
... können wir sehen, daß unsere Datenbank jetzt drei
unterschiedliche Tabellen unsere—playerdata Tabelle und
die zwei Verbindung Tabellen enthält.
Lassen Sie uns jetzt eine Probe von Daten dem
Spielerdatentabelle hinzufügen, also können wir mit den Verbindung
Tabellen experimentieren und die Logik von, wie man verstehen sie
effektiv benutzt. Ist hier die Aussage, die erfordert wird, um
unsere Beispieldaten dem playerdata Tabelle hinzuzufügen:
mysql > EINSATZ IN playerdata BEWERTET - > (' Andrew ', '
QWERTY ', 20, NULL), - > (' Henry ', ' letmein ', 34, NULL), - > ('
Sandra ', ' dra33 ', 19, NULL), - > (' John ', ' j12d ', 23, NULL), -
> (' Jenny ', ' jen123 ', 34, NULL);
Wenn wir alle Informationen von der playerdata Tabelle
vorwählen, die jetzt das folgende verwendet, befehlen Sie:
mysql > WÄHLEN * vom playerdata vor
Nun da wir etwas Beispieldaten haben, lassen Sie
uns versuchen, etwas Relationen zwischen den Spielern in der Datenbank
zu verursachen. Fügen Sie zuerst dem relatefriends Verbindung
Tabelle die Tatsache hinzu, daß Henry Freunde mit Sandra ist.
Ist hier die Aussage, die erfordert wird, um dieses dem
Verbindung Tabelle hinzuzufügen:
mysql > EINSATZ IN relatefriends WERTE - > (' Henry ', '
Sandra ');
Lassen Sie uns jetzt mehr Beispieldaten in die
relatefriends und in die relateenemies Verbindung Tabellen hinzufügen
und sehen, wie wir die Daten manipulieren können. Die zwei
Aussagen, die erfordert werden, um in den Beispieldaten hinzuzufügen,
sind- unten:
|
Anmerkung |
Um Sein gleichzeitig zu verhindern ein Freund und
ein Feind, konnte eine Relation Tabelle benutzt werden. Addieren
Sie einfach eine "feindliche" Markierungsfahne auffangen, und wenn
es eingestellt wird, bedeutet es, daß sie Feinde sind;
andernfalls sind sie Freunde. |
mysql > EINSATZ IN relatefriends BEWERTET - > (' Andrew ',
' Henry '), - > (' Andrew ', ' John '), - > (' Andrew ', ' Jenny '), -
> (' Sandra ', ' Jenny ');
Und auch:
mysql > EINSATZ IN relateenemies BEWERTET - > (' Andrew ',
' Sandra '), - > (' Henry ', ' Jenny '), - > (' Henry ', ' John ');
Nun da wir alle unsere Beispieldaten haben, lassen Sie uns
sehen, wenn wir herausfinden können, wem Andrew Freunde ist mit,
indem er die folgende Aussage verwendet:
mysql > AUSERWÄHLTER Freund von den relatefriends WO
Spieler = ' Andrew ';
Wenn wir diese Aussage durchführen, die Datensichtgeräte
eine Liste aller Spieler, daß Andrew Freunde mit ist.
Wieder können wir dasselbe mit der relateenemies
Verbindung Tabelle genau tun. Z.B. könnten wir alle Feinde des
Henrys mit der folgenden Aussage herausfinden:
mysql > AUSERWÄHLTER Feind von den relateenemies WO
Spieler = ' Henry '
Mit diesen Daten wenn wir dann mehr Informationen
über Feind des Henrys herausfinden wollten, der das username von
Jenny hat, würden wir die folgende Aussage verwenden:
mysql > * vom playerdata IN DEM username = ' Jenny '
VORWÄHLEN;
dieses ist ein Artikel, der von George Ionescu
hinzugefügt wird
Verzicht: Unsere Web site ist
nicht zu der Information verantwortlich, die durch diesen Artikel
enthalten wird. Dieser Artikel reflektiert keineswegs die
Ansichten, die Meinungen, die Gedanken oder den Glauben des
Artikelverzeichnisstabes.
Übersetzung Nachricht: Der Artikel
"Verwandtschafts-SQL Datenbanken" wurde mit einem automatisierten
Übersetzungsdienst übersetzt. Wir entschuldigen herzlichst uns
für alle mögliche Übersetzung Störungen, die auftraten.
Danke für das Verstehen.