![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
al3x3y |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
Всем привет!
Прошу помощи в создании базы данных. Точнее подсказок и лучшего решения от людей которые с базами на Ты. Я только начал изучать все это дело и потому появляются вопросы, на которые найти однозначные ответы в инете не всегда получается. Итак что мне нужно получить: Будет создана база данных с количеством записей 1000-1500 всего. Из нее нужно будет только читать, т.е. запись в нее происходить никакая не будет. 1. Для базы есть картинки. Размер их в среднем 3кб. И тут первый вопрос. Их лучше хранить в самой базе или все же хранить их в папках, а в базу занести на них ссылки? 2. Как лучше построить базу для того чтоб можно было сделать из одного поля одной записи ссылку на другие записи? Нужно чтобы одно поле записи могло ссылаться сразу на несколько других записей. Возможно ли это? Возможно ли выполнить это если все записи будут в одной таблице? Или придется несколько таблиц? С основными вопросами пока все. Надеюсь на Вашу помощь. |
|||
|
||||
Mavrun |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 25.11.2007 Репутация: 2 Всего: 13 |
1. лучше отдельно
2. чтобы соотнести одну запись из первой таблицы с несколькими записями из второй, то в первой таблице создаёшь уникальное поле типа id, где каждая новая запись будет следующим номером, и повторений здесь не будет. а во второй таблице создаёшь поле соотнесения идшников (называешь как угодно) и у нужных строк таблицы указываешь id той записи из первой таблицы, которая тебе нужна. вот по этому ключевому полю и будешь вытаскивать записи из базы. если нужно сделать всё в однйо таблице, то создаёшь опять же уникальное поле id, и ещё одно типа parent, где если запись верхнего уровня - ставишь 0, а если нужно отнести запись к какой-то записи верхнего уровня, то ставишь тут id той записи. Но две таблицы будут проще по запросам вроде как, поэтому хз. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 2 Всего: 101 |
при таком небольшом объеме данных, к тому же необновляемом, лучше делать как удобней - хранить картинки в базе
|
|||
|
||||
al3x3y |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
как это через phpmyadmin можно сделать? если нет то каким запросом это делается. Просто я не силен пока еще в mysql. Только разбираюсь. |
|||
|
||||
cia |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 15.1.2007 Репутация: нет Всего: 4 |
1.
ИМХО нифига это не проще, т.к. скорее всего (в зависимости от задач скрипта) в добавок придется еще писать обертку, которая будет отдавать запрошенную картинку браузеру (речь ведь идет о веб-приложении?), соответственно лучше бы настроить еще и чпу, чтобы адреса картинок выглядели так: example.com/images/111.jpg Что может быть проще, чем тупо указать в базе данных для каждой записи относительный url картинки? Автор поставил задачу так, что из базы данных будет производиться только чтение, а значит, нет самого главного момента, который мог бы привести к усложнению задачи: писать админку, добавляющую/удаляющую картинки. 2. Для каждой записи необходим первичный ключ (id). Далее два варианта решения задачи... Первый - хранить данные в одной таблице, а для связи записей между собой использовать дополнительное поле (relation_id), содержащие идентификаторы (id) связанных записей записей через запятую. Плюсы: только одна таблица. Минусы: относительная сложность подключения связанных записей. Второй вариант - создать дополнительную таблицу с двумя полями: record_id, relation_id. Связь записей между собой через эту таблицу, т.е. record_id - ид (id) "основной" записи, а relation_id - ид (id) связанной записи. Плюсы: простота связи зависимых записей. Минусы: две таблицы. Несомненно, второй способ для ваших нужд подходит больше. Добавлено через 2 минуты и 4 секунды
В phpmyadmin есть такая замечательная вещь, как SQL ![]() Почитайте документацию по MySQL по запросам "create table" и "alter table" |
||||
|
|||||
al3x3y |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
благодарствую товарищи
![]() p.s. вообще оч хорошим примером того что мне надо добиться вот здесь http://r2db.mmoclub.ru/db/items.php?do=1. т.е. я так понимаю что там предметы привязаны к монстрам, и сами предметы привязаны к другим предметам. вот мне нужна такая же реализация. Это сообщение отредактировал(а) al3x3y - 25.11.2010, 14:19 |
|||
|
||||
cia |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 15.1.2007 Репутация: нет Всего: 4 |
В этом конкретном случае не лишним было бы создать еще две таблицы: "свойства" и "значения свойств". Для описания дополнительных параметров, такие как "защита", "атака", "уровень", "агрессивность" и т.д.
|
|||
|
||||
al3x3y |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
если честно я думал создать такую базу данных:
items id, name, image, attack, defense, weight, description, ..., ... (у всех полей кроме id значение NULL по умолчанию) а далее вносить данные в те типы полей которые требуются, вот тут и есть затык - как потом связать все это. к примеру: оружие1 изготавливается из ингридиента1, ингридиента2, игридиента3 и вот как эти ингридиенты привязать к записи оружия1 не понимаю что-то никак. Чтобы когда пользователь тыкнет в ссылку с этим оружием показалась информация не только о самом оружии1, но и вывелся списко тех ингридиентов из которых оно делается и информация по ним. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |