Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[44.220.131.93] |
|
Данный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Язык - Java
СУБД - PostgreSQL В базе названия всех таблиц - существительные в единственном числе. В базу нужно добавить таблицу user, или state. user, или state - зарезервированные слова и чтобы их использовать в запросе, нужно экранировать. Например (строка из Джавы): "schema1.\"state\"" Подобный синтаксис будет и для полей, если они зарезервированные слова, что делает строку запроса замусоренной. Verbatim строк в Java нет. Выхода я вижу два: 1. Переименовать таблицу в существительное множественного числа (users, states). База после этого выглядит некрасиво. 2. Оставить как есть но терпеть некрасивые (грязные) строки в коде. Как быть? Есть ли более красивое решение? |
Сообщ.
#2
,
|
|
|
Цитата sham6215 @ База после этого выглядит некрасиво. Ну очень странное заявление... Можно попробовать создать для использования в запросах представление, типа CREATE VIEW users AS SELECT * FROM "user" |
Сообщ.
#3
,
|
|
|
Цитата sham6215 @ База после этого выглядит некрасиво. Спорное заявление. |
Сообщ.
#4
,
|
|
|
Цитата Akina @ Ну очень странное заявление... Цитата Bas @ Спорное заявление. Вы считаете, что нет проблем, в том, что таблицы называются по-разному? Например: users, car, orders, product и т.д. Мне не нравится, как-то неодинаково и в глаза бросается. Для mysql я бы не спрашивал, сделал бы все одинаково с бектиками ``, но тут действительно неудобно. |
Сообщ.
#5
,
|
|
|
Цитата sham6215 @ Вы считаете, что нет проблем, в том, что таблицы называются по-разному? Ну я, например, считаю, что вообще пофиг, как таблицы называются. А уж что до единого образия, так это вообще никому не надо. Ну и потом, что логичнее: -- так SELECT username FROM users where id=1 -- или так SELECT username FROM user where id=1 ? Как по мне, так первое - выбрать юзера из юзеров... |
Сообщ.
#6
,
|
|
|
Цитата Akina @ Как по мне, так первое - выбрать юзера из юзеров... Может у него однопользовательская БД. Цитата sham6215 @ Например: users, car, orders, product и т.д. У мгогих пользователей одна машина, много заказов , продуктов? Или подразумевается что user, car, order, product содержат по одной записи? |
Сообщ.
#7
,
|
|
|
Цитата Akina @ ? Как по мне, так первое - выбрать юзера из юзеров... Я не против как множественного, так и единственного числа. Для меня главное, чтобы в одной базе было одинаково. Если ты начинаешь работать с базой, где все в единственном числе user, car, product, а потом добавляешь туда orders, то это как-то некрасиво и на мой взгляд неправильно. Цитата Bas @ У мгогих пользователей одна машина, много заказов , продуктов? Или подразумевается что user, car, order, product содержат по одной записи? Это обычные таблицы, где может быть много записей, независимо от названия. В таблицах user, car, order, product будет много пользователей, машин, заказов, продуктов. Просто все таблицы в базе уже именованы единственным числом. И возвращаясь к моему вопросу. Видите ли вы какие-то возможности назвать таблицу например, order и создавать при это запросы, которые в коде будут без экранирования \", которое мусорит запрос? |
Сообщ.
#8
,
|
|
|
Цитата sham6215 @ Видите ли вы какие-то возможности назвать таблицу например, order и создавать при это запросы, которые в коде будут без экранирования \", которое мусорит запрос? Ну попробуй чёнить вроде U&!0022order!0022 UESCAPE '!'. Если не, то меняй СУБД |
Сообщ.
#9
,
|
|
|
Цитата sham6215 @ В базе названия всех таблиц - существительные в единственном числе. Конечно на уровне имхо, но ... Цитата Akina @ Как по мне, так первое - выбрать юзера из юзеров... ... это правильно, потому как логично! Цитата sham6215 @ что делает строку запроса замусоренной Спорное утверждение! Мне наоборот нравится. Экранирование хорошо отделяет ключевые конструкции от сущностей. А если еще и соблюдать отступы/вложенности, ключевые конструкции писать строго в верхнем регистре, не брезговать комментариями ... sql-код будет приятно читаем. |
Сообщ.
#10
,
|
|
|
Ок, понятно.
Думаю, дальше дискутировать нет смысла. Всем спасибо! |
Сообщ.
#11
,
|
|
|
Цитата sham6215 @ В базу нужно добавить таблицу user, или state. Очень спорный вопрос необходимости такого действа. Кто мешает добавить таблицу tblUsers и tblStates? Цитата sham6215 @ ереименовать таблицу в существительное множественного числа (users, states). База после этого выглядит некрасиво. Некрасиво она как раз выглядит с указанными Вами именами. Есть правила хорошего тона (разные, всякие) Но ни в одном из них таблицу для хранения много сущностей не называют именем сущности в единственном числе. Во мнигих рекомендованы префиксы позволяющие отделить "зерна от плевел" В вашем понятии "красиво" разные способы представления данных будут носить одно и тоже имя user, что даст полную путаницу и ошибки уже в самих запросах. Таблица tblUsers (t_users) должна отличатся от представления vUsers и от табличной функции fnUsers Цитата sham6215 @ Для меня главное, чтобы в одной базе было одинаково. Если ты начинаешь работать с базой, где все в единственном числе user, car, product, а потом добавляешь туда orders, то это как-то некрасиво и на мой взгляд неправильно. Правильно. Если попутно все ,что названо зарезервированными словами или очень похожими на них по написанию переименовывается, чтобы не дай бог не перепутать. ЕМНИП рефакторингом такой процесс называется. |