[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Задавать префиксы таблицам это хороший тон?
Страницы: 1, 2, 3, 4
SoMeOnE
Добрый день
Задавать префиксы таблицам это хороший тон или нужно ориентироваться по ситуации?
Вот сейчас небольшое приложение пишу. Таблиц от силы 5-6 будет.
И поймал себя на мысли. То я работаю с сайтам и там прописаны префиксы, то нет. Помню в смс-ках популярных указаны бывают префиксы.

Кто как считает.

Ответ Игорь_Vasinsky из смс-ок
Цитата
префиксы защитят от возможного дублирования названий таблиц, если их много. вообще - я считаю это хорошим тоном
glock18
Зависит от того, что понимается под "префиксом"
Игорь_Vasinsky
Цитата
Зависит от того, что понимается под "префиксом"

prefix_nametable

допустим я собираюсь создать доп модуль для WP, который предусматривает использование 3х таблиц

сама WP имеет уже множество таблиц и я не вижу необходимости сверять свои имена с именами имеющихся, я просто создам свои таблицы вида vas_mod_table1, vas_mod_table2, vas_mod_table3 и буду спокоен, что мой модуль смогут использовать почти все и ез проблем, в структуре бд

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
AlmazDelDiablo
Если вы имеете в виду pref_*, то это нужно только в том случае, если приложение подразумевает собой работу с какими-то другими приложениями на одной базе данных. CMS так делают, дабы не заставлять пользователя выделать отдельную базу под движок.

_____________
Блог | VK | GitHub | Twitch
Игорь_Vasinsky
грубо говоря - да, так и есть, я выше описал немного проще ситуацию

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
glock18
Цитата (Игорь_Vasinsky @ 18.03.2014 - 11:04)
prefix_nametable

Это очевидно. Неочевидно конкретно что это за префикс. В целом префиксы использовать нужно, но если речь о каком-то волшебном "site_", то это имеет смысл только если будут так же таблицы без него/с другим префиксом.

Далее, если же это не какой-то волшебный префикс, то я уже не стал бы называть это префиксом. Это просто обязательно называть таблицы адекватно. Если они относятся к модулю, то абсолютно очевидно, что название модуля (или ссылка на него) должно быть в названии таблицы.
AllesKlar
Собствено, исчерпывающий ответ дал AlmazDelDiablo
Перфиксы имеют место быть в ситуации, два сайта с одинаковым движком работают на одной базе.

А вопрос безопасности, что типа хакеру труднее будет подобрать имя к таблице - это из ряда "ну прям, как дети малые". Перфикс - это обычно 1-3 символа из ряда a-z, че там подбирать-то?

Вот перфикс к именам полей - это другой вопрос. Я использую всегда.
Таблица users, значит все поля начинаются с u_.... Очень удобно, когда индексы связываешь.
Например, в таблице адресов addressbook: a_id; ... u_id - сразу понятно, что поле u_id - это внешний индекс к users



_____________
[продано копирайтерам]
killer8080
ответил в смсках
Цитата
префиксы нужны только для того, чтоб не было конфликтов имен таблиц, когда несколько разных движков вынуждены пользоваться одной БД. В общем это болезнь шаред хостингов, когда сайтов может быть несколько, а БД выделяется только одна. На ВПС-ках и дедиках в этом нет никакого смысла.
SoMeOnE
Цитата (glock18 @ 18.03.2014 - 11:07)
Далее, если же это не какой-то волшебный префикс, то я уже не стал бы называть это префиксом. Это просто обязательно называть таблицы адекватно. Если они относятся к модулю, то абсолютно очевидно, что название модуля (или ссылка на него) должно быть в названии таблицы.

Ну допустим если у меня есть таблица users. И я добавляю какой-то новый модуль который также содержит таблицу под этим названием. Это имеется ввиду?
В данном случае я скорей ее назову module_users (может у меня в таблице много различный модулей будет содержать эту таблицу), чтобы в дальнейшем не путаться от короткобуквенных префиксов. Или это впринципе тоже можно назвать префиксом?

Цитата (AllesKlar @ 18.03.2014 - 11:16)
Вот перфикс к именам полей - это другой вопрос. Я использую всегда.
Таблица users, значит все поля начинаются с u_.... Очень удобно, когда индексы связываешь.
Например, в таблице адресов addressbook: a_id; ... u_id - сразу понятно, что поле u_id - это внешний индекс к users

тут тоже мне легче когда написано например
`article`.`id` = `users`.`id`

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

Спасибо за ответы. Прояснили ситуацию.
AllesKlar
Цитата (SoMeOnE @ 18.03.2014 - 17:38)
тут тоже мне легче когда написано например
`article`.`id` = `users`.`id`

Это же совсем другое.
`article`.`id` - это id артикля.
`users`.`id` - это id юзера.

Таблица `article` имеет свой id, но так же должна седержать внешний индекс к таблице `users`



_____________
[продано копирайтерам]
glock18
SoMeOnE
Мне трудно представить, чтобы в приложении было несколько таблиц пользователей. какой-то модуль users - это те кто подключен к модулю, их настройки? Есть разные варианты тут, доводилось встречать записи group2user и user_group_ref. Хотя если на то пошло, то самым разумным было бы users внести в какой-то модуль, пусть виртуальный. Оно и так входит, но вот почему-то в имени таблицы его нет ) в симфони 1.4, модуль называется guard. то есть таблица для юзеров будет sf_guard_user, где sf - префикс для симфоневских таблиц.

Иными словами, вообще смотреть на это надо несколько иначе. Достаточно просто, чтобы каждое следующее слово в названии сужало область (исключение разве что для junction-таблиц), к которой таблица относится. В идеале вообще не должно быть однословных названий таблиц

EDIT:
ну да, с идеалом я поспешил. Возможно исключение для таблиц, ставящихся в основу этого так называемого модуля.
SoMeOnE
Цитата (AllesKlar @ 18.03.2014 - 14:01)
Таблица `article` имеет свой id, но так же должна седержать внешний индекс к таблице `users`

Теперь понял.
В последний раз при связке я таки называл не u.id, а user_id, article_id или post_id соот. Учитывая, что второе слово из двух букв опять таки лучше и нативней чтение. Обычно по id связываем. Возможно при других связках и нужно сокращать.

glock18
Теперь понятно) спасибо.
linker
Не вижу смысла. По мне так, когда в базе данных куча таблиц с одинаковыми именами и разными префиксами - это жесть, которая должна выжигаться калёным железом.

_____________
Gear Framework
Gear Framework на Github
Valick
Цитата
жесть, которая должна выжигаться калёным железом

хм, и что вы предлогаете? переименовывать таблицы и переписывать код? и делать это каждый раз с выходом обновления стороннего продукта?
а самое главное зачем?
что бы глаз не раздражали какие-нибудь hts_config и muz_config?

_____________
Стимулятор ~yoomoney - 41001303250491
twin
linker
Цитата
Не вижу смысла. По мне так, когда в базе данных куча таблиц с одинаковыми именами и разными префиксами - это жесть, которая должна выжигаться калёным железом.

Ну не торопись так))) Иногда бывает необходимо поставить на одной площадке кучу одинковых движков, а выделяемых хостером баз данных недостаточно при достаточном объеме. Доплачивать за новые - какой смысл, если можно префиксы расставить. Ведь таблицы аккуратненько отсортируются в алфавитном порядке и все будет красиво.

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

AllesKlar
Цитата
Таблица users, значит все поля начинаются с u_.... Очень удобно, когда индексы связываешь.
При таком подходе ты убивааешь возможность пользоваться некоторыми возможностями БД. Допустим USING, INSERT...SELECT и пр. В сквозных назвниях имхо проку больше.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.