Подумайте о том, что базы данных, связанных с игроками в игре друг с другом (например, чтобы определить, кто является другом каждого игрока, и кто является врагом каждого игрока).
|
|
Сначала давайте создадим таблицу для хранения данных, для каждого из игроков. Уведомление добавить первичный ключ, который позволяет рассчитывать на то, что все строки имеют уникальную местах, которые могут быть использованы в качестве справочного пособия. Заметим также, что каждая строка данных в первичный ключ должен быть уникальным друг с другом. Вот заявление, необходимых для создания нашей базе данных (так называемый gamedata), и наши playerdata таблице.
mysql> CREATE DATABASE gamedata; mysql> USE gamedata; mysql> CREATE TABLE playerdata (-> имя пользователя CHAR (255) UNIQUE NOT NULL, -> пароль CHAR (255), -> возраста INT, -> datecreated TIMESTAMP, -> PRIMARY KEY (имя пользователя));
Уведомление здесь, как мы определили имя пользователя колонку, а также UNIQUE NOT NULL. Попросту говоря, это означает, что она должна содержать значение, и это значение не должно быть таким же, как и любое другое имя пользователя в любой другой записи в таблице. Заметим также, что мы поставили с первичным ключом таблицы, чтобы быть в поле имя пользователя, как мы будем в основном поиске по этой области, которые вы увидите в момент.
В дополнение к этой информации мы также должны некоторым образом хранить друзей и врагов. Это делается с помощью ссылки таблице. Ссылка столом действительно просто обычной таблице базы данных, однако его главная цель состоит в том, чтобы данные касаются так или иначе сохранять пространство и оптимизировать то, как база данных на доступ к информации.
Давайте создадим два ссылку столов, по одному для касающиеся друзей и для врагов, связанные друг с другом. Ниже заявления, которые требуются для достижения этой цели.
| Примечание | Если ссылка таблицы используется, оптимизирован способ заключается в том, чтобы хранить INT ценностей, и там есть поле с ID auto_increment в playerdata таблице как первичный ключ. Он не является для чтения, когда вы выполнять SELECT, но это быстрее из Ваших приложений. При обновлении игрок, имя, она не нарушить целостность базы данных. Кроме того, ссылка таблицы зачастую структуры, которые будут использоваться только в тех случаях, когда имеются n сумму в отношениях с одной строки на другие строки. Если есть всегда только одно соотношение (один друг или враг), прямая связь должна быть использована. |
mysql> CREATE TABLE relatefriends (-> игрок CHAR (255), -> другу CHAR (255));
А также:
mysql> CREATE TABLE relateenemies (-> игрок CHAR (255), -> врага CHAR (255));
Если мы сейчас показывают таблицы в базе данных, с помощью следующей команды:
mysql> SHOW TABLES;
... мы видим нашей базы данных в настоящее время содержит три различные таблицы-наш playerdata стол и два ссылку столы.
Давайте теперь добавить выборку данных на плеер данные таблицы, так что мы можем экспериментировать со ссылкой столы и понять логику того, как использовать их эффективно. Вот заявление, требуется, чтобы добавить нашу выборку данных для playerdata таблице:
mysql> INSERT INTO playerdata ЦЕННОСТИ -> ( "Эндрю", "qwerty", 20, NULL), -> ( "Генри", "letmein ', 34, NULL), -> (" Сандра "," dra33 ", 19 , NULL), -> ( 'Джон', 'j12d', 23, NULL), -> ( "Дженни", "jen123 ', 34, NULL);
Если мы выбираем всю информацию из таблицы playerdata сейчас, используя следующие команды:
mysql> SELECT * FROM playerdata
Теперь о том, что у нас есть некоторые выборочные данные, давайте попробуем создать определенные отношения между игроками в базе данных. Во-первых добавить к ссылке relatefriends таблице тот факт, что Генри это друзья с Sandra. Вот заявление, требуется, чтобы добавить эту ссылку в таблице:
mysql> INSERT INTO relatefriends ЦЕННОСТИ -> ( "Генри", "Сандра");
Давайте сейчас добавить еще несколько выборочных данных в так relatefriends и relateenemies ссылку столов и посмотреть, как мы можем манипулировать данными. Эти два заявления, требуется, чтобы добавить в выборку данных приведены ниже:
| Примечание | Для предотвращения является другом и врагом в то же время, один связи таблице может быть использован. Просто добавьте поле "противника" флаг, и если он установлен, то это означает, что они являются врагами, иначе они друзья. |
mysql> INSERT INTO relatefriends ЦЕННОСТИ -> ( "Эндрю", "Генри"), -> ( "Эндрю", "Джон"), -> ( "Эндрю", "Дженни"), -> ( "Сандра", " Дженни ");
А также:
mysql> INSERT INTO relateenemies ЦЕННОСТИ -> ( "Эндрю", "Сандра"), -> ( "Генри", "Дженни"), -> ( "Генри", "Джон");
Теперь о том, что мы все из нашей выборки данных, давайте посмотрим, если мы сможем узнать, кто является Андрей с друзьями, используя следующее заявление:
mysql> SELECT другу ГОДА relatefriends ГДЕ игрок = 'Эндрю';
Когда мы вызываем это заявление, в консоли отображается список всех игроков, что Эндрю это с друзьями.
Опять же, мы можем сделать то же самое с relateenemies ссылке таблице. Например, мы могли бы узнать все из Генри врагов со следующим заявлением:
mysql> SELECT врага ГОДА relateenemies ГДЕ игрок = 'Генри "
Что эти данные, если бы мы этого хотели, чтобы узнать более подробную информацию о Генри противника, что имеет имя пользователя, Дженни, мы хотели бы использовать следующее заявление:
mysql> SELECT * FROM playerdata ГДЕ имя пользователя = 'Дженни';
Online: 879 users browsing the articles directory
|
|