Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7

Как правильно создавать таблицы в MySQL

29.11.2011, 21:00. Показов 3517. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, друзья...
Созрел у меня только-что один интересный вопрос. Я только-что понял, что пользовался базой данных не правильно Это очень не хорошо и это надо строчно исправить!
Скажите, на примере маленькой базы данных, как создавать связи между таблицами... Тоесть, как провильно реализовать спроектированную базу данных...

Как-то я слишком сложно излагаю... Попытаюсь на примере
Есть главная таблица с пользователями users (id, password, login, email)
Есть таблица с дополнительной информацией users_info (id, user_id, bio, sex, tel)
Есть таблица с конфигурацией компютера users_comps (id, user_id, ram, hdd)
Есть таблица с друзьями пользователя user_friends (id, user_id, friend_id)

Как правильно в phpMyAdmin (или SQL запросами) создать эти таблицы, установить между ними связи и использовать в PHP скриптах...

Хочу узнать мнения профессионалов, чтобы поработать над своими ошибками
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2011, 21:00
Ответы с готовыми решениями:

Как создавать таблицы mysql?
Блин, как создавать таблицы mysql? Добавлено через 55 минут на php

Как правильно создавать таблицы SQL База Данных
Приветствую. Вот какая у меня проблема необходимо программно создавать таблицу, имя таблицы генерировать будет тоже программа. Вся...

Как правильно создать таблицы mysql, имея php код?
Доброго время суток. У меня есть php страниц,от которых нет таблиц в БД mysql Помогите восстановить таблицы,я вообще в этом не понимаю....

3
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
29.11.2011, 21:27
Цитата Сообщение от Jallik Lich Посмотреть сообщение
users_info (id, user_id, ...
Поле id не нужно. Поле user_id - уникальный ключ или первичный (без автоинкремента, естественно), если у этого юзера такая запись может быть только одна.
Цитата Сообщение от Jallik Lich Посмотреть сообщение
user_friends (id, user_id, friend_id)
Поле id так же не нужно. А поля user_id и friend_id вместе один уникальный ключ, чтобы юзер А не мог быть другом юзера Б много раз.
1
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7
29.11.2011, 21:40  [ТС]
Vovan-VE, спасибо огромное...
По поводу таблицы user_friends: как это выглядит в SQL запросе (или какие поля необходимо отметить в phpMyAdmin)

И как создавать эти самые связи? Я делал так: в таблице users отмечал первычный ключ, и в php скрипте писал что-то вроде...
PHP
1
2
$user = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='1' LIMIT 1", $db));
$user_data = mysql_fetch_array(mysql_query("SELECT * FROM users_info WHERE user_id='{$user['id']}' LIMIT 1"));
Но сегодня прочел статью, что так делать не правильно... Эти два запроса необходимо объеденить...
И, кроме этого, в самой базе данных можно создавать связи, или только в скрипте?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
30.11.2011, 18:49
Цитата Сообщение от Jallik Lich Посмотреть сообщение
По поводу таблицы user_friends: как это выглядит в SQL запросе (или какие поля необходимо отметить в phpMyAdmin)
В структуре таблицы отметить галками оба поля и под ними нажать иконку [U] "уникальный ключ".
Цитата Сообщение от Jallik Lich Посмотреть сообщение
Но сегодня прочел статью, что так делать не правильно... Эти два запроса необходимо объеденить...
SQL
1
2
3
4
SELECT `u`.*, `ui`.*
FROM `users` AS `u`
    LEFT JOIN `users_info` AS `ui` ON `ui`.`user_id` = `u`.`id`
WHERE `u`.`id` = 42;
Цитата Сообщение от Jallik Lich Посмотреть сообщение
И, кроме этого, в самой базе данных можно создавать связи, или только в скрипте?
Можно использовать внешние ключи (foreign key). Но для этого надо engine у таблиц сделать InnoDB.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2011, 18:49
Помогаю со студенческими работами здесь

Как правильно создавать объекты ?
Как правильно создавать объекты и как они расходуют память, что является правильным подходом? вариант 1: public class...

Как правильно создавать переменные в С++?
Тема исключительно для завлечения. Почему castaway заблокировали? Обиделся что "Спасибо" не жмакают?

Как правильно создавать потоки?
Ребята, подскажите как правильно организовать работу функции в отдельном потоке, чтобы она не ставила в ожидание выполнение остальных...

как правильно Ls создавать реплику?
Собственно если мы создаём реплику руками на локальную машину то потом по Ctrl+O спокойно её видим и она полностью синициализирована ...

Как правильно создавать JFrame?
научите! подскажиет! посоветуйте где почитать! как правильно создать Jframe? вот есть код к примеру public static class JFrameWin...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru