Нужно или полезно использовать в MySQL соглашение о присвоении имен "вещи. Что угодно"? - PullRequest
0 голосов
/ 05 октября 2011

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

При поиске ответов на конкретную проблему я вижу очень много примеров, которые используют точки в своих соглашениях об именах в своих запросах MySQL. Например:

SELECT c.id, c.comment, c.user_id, u.username, u.photo
FROM (comments c)
JOIN users u ON c.user_id = u.id
WHERE c.topic_id = 9

и вот еще один пример:

SELECT fb.auto_id, fb.user_id, fb.bulletin, fb.subject, fb.color, fb.submit_date, fru.disp_name, fru.pic_url
FROM friend_bulletin AS fb
LEFT JOIN friend_friend AS ff ON fb.user_id = ff.userid
LEFT JOIN friend_reg_user AS fru ON fb.user_id = fru.auto_id
WHERE (
ff.friendid =1
AND ff.status =1
)
LIMIT 0 , 30

Есть ли особая польза от использования точек в именах? Как человек, который делает большую часть работы с CSS, на первый взгляд точки кажутся мне чем-то вроде ассоциации между разными вещами, но для чего они здесь?

Полагаю, я просто хочу убедиться, что я не делаю свою структуру базы данных / запросы менее эффективными, не используя это соглашение об именовании точек. Если бы кто-то мог объяснить мне в терминах мирян, для чего они используются, я был бы очень признателен.

Ответы [ 3 ]

2 голосов
/ 05 октября 2011

stuff.whatever следует рассматривать как table_name.column_name.Вы явно связываете каждую ссылку на столбец с таблицей, к которой он принадлежит, и это, IMHO, лучший способ следовать.

1 голос
/ 05 октября 2011

Вы не должны думать о точках как о «соглашении об именах».Функциональность больше похожа на вызов атрибута для объекта.

В случае stuff.whatever «stuff» представляет таблицу базы данных, а whatever представляет данные в столбце с именем «что угодно» в базе данных..

Если вы видели столбец, на который ссылаются без части таблицы, это потому, что пользователь ожидает, что mysql выяснит, какой столбец они имеют в виду.

Если в запросе есть только одна таблица со столбцом с таким именем, mysql может это сделать, без проблем.

Но, например, у вас есть таблица "facebook" и«твиттер» и вы присоединяетесь к ним через запрос, потому что у них обоих есть столбец «user_id» или что-то в этом роде, и у них ОБА есть столбец «avatar_image», и вы не указали таблицу, mysql вызовет ошибку, сообщая, что это не такне знаю точно, что вы просили.

0 голосов
/ 05 октября 2011

Нет ничего плохого в использовании соглашений о полных именах, однако, если у вас длинные имена table, field, проще использовать псевдоним для удобства чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...