На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS

Дорогие друзья! Поздравляем вас с Новым 2018 годом!

Всем удачи, успеха и благополучия!
В новом году ожидаем новых рекордов при подсчёте количества ёлочек на экране ;)


msm.ru
! информация о разделе
user posted imageДанный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Chow, Bas, MIF, JoeUser
  
> Зарезервированные слова в названии таблиц/полей, [PostgreSQL]
    Язык - Java
    СУБД - PostgreSQL

    В базе названия всех таблиц - существительные в единственном числе.
    В базу нужно добавить таблицу user, или state.

    user, или state - зарезервированные слова и чтобы их использовать в запросе, нужно экранировать.
    Например (строка из Джавы):

    "schema1.\"state\""

    Подобный синтаксис будет и для полей, если они зарезервированные слова, что делает строку запроса замусоренной.
    Verbatim строк в Java нет.

    Выхода я вижу два:
    1. Переименовать таблицу в существительное множественного числа (users, states). База после этого выглядит некрасиво.
    2. Оставить как есть но терпеть некрасивые (грязные) строки в коде.

    Как быть? Есть ли более красивое решение?
    Сообщение отредактировано: JoeUser -
    порядка нет и никогда не будет
      Цитата sham6215 @
      База после этого выглядит некрасиво.

      Ну очень странное заявление...
      Можно попробовать создать для использования в запросах представление, типа
      ExpandedWrap disabled
        CREATE VIEW users
        AS
        SELECT * FROM "user"
      и проверить, хватает ли у СУБД интеллекта "развернуть" вьюшку - главным образом в части полноценного использования индексов.
      Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
      Есть претензии ко мне как к участнику? да ради бога.
      Не нравятся мои ответы? не читайте их.
      В общем, берегите себя. Нервные клетки не восстанавливаются.
        Цитата sham6215 @
        База после этого выглядит некрасиво.

        Спорное заявление.
        Цель - ничто , процесс - все.
          Цитата Akina @
          Ну очень странное заявление...

          Цитата Bas @
          Спорное заявление.


          Вы считаете, что нет проблем, в том, что таблицы называются по-разному?
          Например: users, car, orders, product и т.д.
          Мне не нравится, как-то неодинаково и в глаза бросается. Для mysql я бы не спрашивал, сделал бы все одинаково с бектиками ``, но тут действительно неудобно.
          порядка нет и никогда не будет
            Цитата sham6215 @
            Вы считаете, что нет проблем, в том, что таблицы называются по-разному?

            Ну я, например, считаю, что вообще пофиг, как таблицы называются. А уж что до единого образия, так это вообще никому не надо. Ну и потом, что логичнее:
            ExpandedWrap disabled
              -- так
              SELECT username FROM users where id=1
              -- или так
              SELECT username FROM user  where id=1

            ? Как по мне, так первое - выбрать юзера из юзеров...
            Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
            Есть претензии ко мне как к участнику? да ради бога.
            Не нравятся мои ответы? не читайте их.
            В общем, берегите себя. Нервные клетки не восстанавливаются.
              Цитата Akina @
              Как по мне, так первое - выбрать юзера из юзеров...

              Может у него однопользовательская БД.
              Цитата sham6215 @
              Например: users, car, orders, product и т.д.

              У мгогих пользователей одна машина, много заказов , продуктов?
              Или подразумевается что user, car, order, product содержат по одной записи?
              Цель - ничто , процесс - все.
                Цитата Akina @
                ? Как по мне, так первое - выбрать юзера из юзеров...

                Я не против как множественного, так и единственного числа. Для меня главное, чтобы в одной базе было одинаково. Если ты начинаешь работать с базой, где все в единственном числе user, car, product, а потом добавляешь туда orders, то это как-то некрасиво и на мой взгляд неправильно.

                Цитата Bas @
                У мгогих пользователей одна машина, много заказов , продуктов?
                Или подразумевается что user, car, order, product содержат по одной записи?

                Это обычные таблицы, где может быть много записей, независимо от названия.
                В таблицах user, car, order, product будет много пользователей, машин, заказов, продуктов.
                Просто все таблицы в базе уже именованы единственным числом.

                И возвращаясь к моему вопросу. Видите ли вы какие-то возможности назвать таблицу например, order и создавать при это запросы, которые в коде будут без экранирования \", которое мусорит запрос?
                порядка нет и никогда не будет
                  Цитата sham6215 @
                  Видите ли вы какие-то возможности назвать таблицу например, order и создавать при это запросы, которые в коде будут без экранирования \", которое мусорит запрос?

                  Ну попробуй чёнить вроде U&!0022order!0022 UESCAPE '!'. Если не, то меняй СУБД :D
                  Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                  Есть претензии ко мне как к участнику? да ради бога.
                  Не нравятся мои ответы? не читайте их.
                  В общем, берегите себя. Нервные клетки не восстанавливаются.
                    Цитата sham6215 @
                    В базе названия всех таблиц - существительные в единственном числе.

                    Конечно на уровне имхо, но ...

                    Цитата Akina @
                    Как по мне, так первое - выбрать юзера из юзеров...

                    ... это правильно, потому как логично!

                    Цитата sham6215 @
                    что делает строку запроса замусоренной

                    Спорное утверждение! Мне наоборот нравится. Экранирование хорошо отделяет ключевые конструкции от сущностей. А если еще и соблюдать отступы/вложенности, ключевые конструкции писать строго в верхнем регистре, не брезговать комментариями ... sql-код будет приятно читаем.
                    Мои программные ништякиhttp://majestio.info
                      Ок, понятно.
                      Думаю, дальше дискутировать нет смысла.

                      Всем спасибо!
                      порядка нет и никогда не будет
                        Цитата sham6215 @
                        В базу нужно добавить таблицу user, или state.

                        Очень спорный вопрос необходимости такого действа. Кто мешает добавить таблицу tblUsers и tblStates?
                        Цитата sham6215 @
                        ереименовать таблицу в существительное множественного числа (users, states). База после этого выглядит некрасиво.

                        Некрасиво она как раз выглядит с указанными Вами именами.
                        Есть правила хорошего тона (разные, всякие) Но ни в одном из них таблицу для хранения много сущностей не называют именем сущности в единственном числе. Во мнигих рекомендованы префиксы позволяющие отделить "зерна от плевел"
                        В вашем понятии "красиво" разные способы представления данных будут носить одно и тоже имя user, что даст полную путаницу и ошибки уже в самих запросах.
                        Таблица tblUsers (t_users) должна отличатся от представления vUsers и от табличной функции fnUsers ;)

                        Цитата sham6215 @
                        Для меня главное, чтобы в одной базе было одинаково. Если ты начинаешь работать с базой, где все в единственном числе user, car, product, а потом добавляешь туда orders, то это как-то некрасиво и на мой взгляд неправильно.

                        Правильно. Если попутно все ,что названо зарезервированными словами или очень похожими на них по написанию переименовывается, чтобы не дай бог не перепутать. ЕМНИП рефакторингом такой процесс называется.
                        Сообщение отредактировано: Павел Калугин -
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script Execution time: 0,1458 ]   [ 18 queries used ]   [ Generated: 21.01.18, 19:01 GMT ]