Создание динамического веб-сайта с использованием Mysql и PHP

#php #mysql #database-design #dynamic #web

#php #mysql #база данных-дизайн #динамический #веб

Вопрос:

Вступление

Здравствуйте! Я нахожусь в процессе создания веб-сайта с текстами песен, где я буду хранить тексты песен в базе данных MySQL.

Я хочу иметь 2 основные таблицы: 1 для текста песни, которая будет иметь идентификатор, название текста, текст текста, имя исполнителя и количество просмотров.

Другой таблицей будет таблица исполнителей с: id, имя исполнителя

ВОПРОСЫ:

  1. Как я могу связать две таблицы, используя поле имени исполнителя в обеих таблицах? Я хочу отобразить всех исполнителей на моем сайте из таблицы и просмотреть все тексты песен, связанные с этим конкретным исполнителем/
  2. Как я могу ссылаться на конкретную запись или поле в таблице?

Пожалуйста, помогите или, если вы знаете какие-либо сайты или видео, которые могут помочь мне изучить эти и другие вещи, которые могут помочь мне в создании моего сайта, я был бы признателен.

Ответ №1:

Не сохраняйте имя исполнителя в обеих таблицах. Это противоречит цели создания отдельной таблицы исполнителей. Вместо этого сохраните ArtistID в таблице Lyrics и сохраните только имя исполнителя в таблице Artist. Таким образом, если вы, например, неправильно напишете имя исполнителя, вам нужно будет обновить только одну таблицу, и вы не нарушите связь между текстом и исполнителем.

Таблицы связаны друг с другом с использованием отношений внешнего ключа.

Ответ №2:

Я отвечаю на первый вопрос.
Вам действительно следует изменить таблицу текстов песен, используя id_artist поле вместо artist name .
Это гарантирует, что вы не будете дублировать имена (таким образом, тратя пространство), и вы не сможете написать неправильное имя, что приведет к неправильному результату во время запросов.
Итак, вы можете сделать

 SELECT a.`artist name`, l.title, l.text
FROM artist a INNER JOIN lyrics l
ON a.id = l.id_artist
WHERE a.name = '....'
// or you can use WHERE a.id = ...