powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Мучает вопрос названия таблиц
29 сообщений из 29, показаны все 2 страниц
Мучает вопрос названия таблиц
    #38972545
Nekifrovv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На ночь глядя столкнулся с таким вопросом - вот его суть:

Например есть табличка items (пусть будет каталог товаров - не суть)
У этой таблички (items) есть категории. Я бы назвал ее просто categories, но категории встречаются уже в моей базе в тикетах tickets, по этому в названии таблички categories мы должны указать к каким категориям она относится. Получается общая структура выглядит так:

items
items_categories
tickets
tickets_categories

Но это не все. Каждая связка должна иметь связь многие ко многим, в результате получается.

items
items_categories
items_items_categories
tickets
tickets_categories
tickets_tickets_categories

Получается не очень компактно и красиво. Очень длинные названия таблицы в базе, очень длинные переменные в коде. Конечно хочется чтобы с этим продуктом кто-то другой мог дальше работать. Разнести по разным базам (items и tickets) не вариант, хочется сохранить целостность.
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38972552
babona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Oracle длина полей 30 символов, у MSSQL и того больше. Времена dBase c 8 символьными полями канули в лету. Совремённые тулзы набора SQL-запросов имеют интеллиженс.
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38972593
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekifrovvЯ бы назвал ее просто categories, но категории встречаются уже в моей базе в тикетах tickets, по этому в названии таблички categories мы должны указать к каким категориям она относится. Получается общая структура выглядит так:

items
items_categories
tickets
tickets_categories

Но это не все. Каждая связка должна иметь связь многие ко многим, в результате получается.

items
items_categories
items_items_categories
tickets
tickets_categories
tickets_tickets_categories

Получается не очень компактно и красиво.

Возможно, например, сократить такие слова как items и tickets, так как Вы говорите, что назвали "просто categories". Тогда было бы компактней:
it_categories
it_it_categories. И с другой стороны как бы подчеркивалось что это справочники: что-то как бы не основное в БД.
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38972662
Nekifrovv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

Спасибо за ваш ответ, интересно будут ли еще у кого-нибудь версии
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38972872
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekifrovv,

как сказал кто-то очень умный, не помню кто, в программировании есть две принципиально трудные задачи:
задача именования объектов и задача выделения и освобождения памяти, всё остальное -- ерунда.

Ты в данном топике пытаешься решить одну из принципиально сложнейших задач программирования.
Не получится. В общем она не решается.
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38972883
Nekifrovv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пытаюсь понять как мне переменную назвать, в которую данные из tickets_tickets_categories получаю, у меня есть два варианта

1. $ticketsTicketsCategories
2. $ttc
3. $tTCategories

1 - слишком длинный
2 - не понятный
3 - тоже вроде не очень.

Голосуем?
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38972916
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekifrovv,

tickets_categories_h

items_categories_h

Как бы "h" говорит о накопительной таблице с историей (history)... Во всяком случае, как сами придумаете, так оно и будет. Кто будет работать с базой, потом привыкнет.
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973011
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для каждой именованной сущности в проекте заведи два имени: полное и сокращенное.

Полное должно быть ясным и узнаваемым, обычно это слово без сокращения, или комбинация слов: Items, Categories, TicketСategories.

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

Например, It, Cat, TckCat

Короткое имя используется для комбинаций имен сущностей (например, в таблицах связки), и других местах, где краткость важнее - например, где код насыщен именами, и длинные имена могут затуманить суть алгоритма.

В коротких именах желательно следить, чтобы они отличались хотя бы двумя и более буквами, то есть чтобы не было Itm - Itn. Тогда опечатка в одном символе не приведет к смысловой ошибке, а отловится компилятором.

Еще желательно, чтобы короткие имена не начинались с друг друга (условие префиксности), для однозначности в комбинациях.
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973034
ЮВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivNekifrovv,

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

Увы, не только в программировании.
Некоторым авторам проще написать 500-страничный роман, чем придумать ему название.
Почитайте, например, З. Д. Блистовский "Муки заголовка".
Хотя вряд-ли это вас утешит...
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973084
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще Джо Селко в "Стиль программирования на SQL" рассуждал об именовании. Неоднозначно, но заглянуть стоит.
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973187
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekifrovvНа ночь глядя столкнулся с таким вопросом - вот его суть:
У меня есть привычка в случае, если приложение работает с большим количеством таблиц, снабжать их префиксами по "области". То есть Ваши таблицы выглядели бы у меня так:

i$items
i$categories
i$item_categories
t$tickets
t$categories
t$ticket_categories

Если по каким-то причинам префиксы неудобны, я переименовал бы Ваши таблицы следующим образом:

items
icategories
items_icategories
tickets
tcategories
tickets_tcategories
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973342
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
F#
Гость
NekifrovvПолучается не очень компактно и красиво.

Мне кажется, красиво называть читаемо и длинно, если надо

items
item_categories
items_in_category
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973420
1799
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NekifrovvНа ночь глядя столкнулся с таким вопросом - вот его суть:

..тыгдын..

..Получается не очень компактно и красиво. ..
..целостность.

гламно чоб база 'построена' пральна была
в коде чоб не было запретных слофф..
..

и ваще
Утро - Вечера мудренее
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973441
stdvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nekifrovv,

СУБД какая?
если ms sql server 2005+, то можно использовать имя схемы:
items.items
items.categories
items.items_categories
tickets.tickets
tickets.categories
tickets.tickets_categories
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973476
babona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherДля каждой именованной сущности в проекте заведи два имени: полное и сокращенное.

Полное должно быть ясным и узнаваемым, обычно это слово без сокращения, или комбинация слов: Items, Categories, TicketСategories.

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

Например, It, Cat, TckCat

Короткое имя используется для комбинаций имен сущностей (например, в таблицах связки), и других местах, где краткость важнее - например, где код насыщен именами, и длинные имена могут затуманить суть алгоритма.

В коротких именах желательно следить, чтобы они отличались хотя бы двумя и более буквами, то есть чтобы не было Itm - Itn. Тогда опечатка в одном символе не приведет к смысловой ошибке, а отловится компилятором.

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


в качестве коротких имен можно, нужно использовать устоявшиеся/общеизвестные в предметной области акронимы.
Например, FPD, NPL
А просто выдумывать короткие имена - это потом еще слой перевода коротких наименований в полные наименования. 30 символов - можно вполне вложиться. А запросы будут читабельными, можно даже экспатам показывать в портфолио
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973480
babona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stdvbNekifrovv,

СУБД какая?
если ms sql server 2005+, то можно использовать имя схемы:
items.items
items.categories
items.items_categories
tickets.tickets
tickets.categories
tickets.tickets_categories

а потом вам потребуется развернуть свою универсальную схему у другого заказчега, где СУБД не MSSQL - и алё
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973623
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
babonaа потом вам потребуется развернуть свою универсальную схему у другого заказчега, где СУБД не MSSQLпроблема с именованием таблиц тогда будет наименее важной )))
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973659
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
названия таблиц должны быть в единственном числе
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973762
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
F#
Гость
bochkovназвания таблиц должны быть в единственном числе

Почему?
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973767
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что в выражениях ссылка на таблицу это
фактически ссылка на каждую отдельную запись
так легче воспринимается
а вот базу можно хоть как называть
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973793
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekifrovv,

В конце концов, если так уж мучает вопрос названия таблиц -- называй

T1, T2, T3 ... T150 ...

Я имел дело с одной БД, где именно так таблицы назывались.
(не шучу).
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973850
babona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще раз настаиваю - называйте таблицы международными наименованиями, Яндекс-переводчик в помощь, а еще лучше словарь по предметной области найти.

Автор молодец, если задумывается над наименованиями.

Представьте, схему вашей базы данных , тексты запросов под микроскопом пристально будут рассматривать зарубежные маститые специалисты. Если будет понятно и западным аналитикам и бизнесАм, то будете на коне. Не слушайте местных программистов
В конце концов база велозавода - отправной пример
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973856
Nekifrovv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

Вот понравилась ваша идея, я бы сделал примерно так

i_items
i_categories
i_items_categories

t_tickets
t_categories
t_tickets_categories

Тут главное префиксов одинаковых не делать и все вроде ничего.
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973859
Nekifrovv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stdvbNekifrovv,

СУБД какая?
если ms sql server 2005+, то можно использовать имя схемы:
items.items
items.categories
items.items_categories
tickets.tickets
tickets.categories
tickets.tickets_categories

Mysql.

В этом примере первые точки заменяют нижние подчеркивания в моем примере, а длина названий таблиц остается прежней, другими словами ничего почти не изменилось )
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973862
Nekifrovv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
babonaеще раз настаиваю - называйте таблицы международными наименованиями, Яндекс-переводчик в помощь, а еще лучше словарь по предметной области найти.

Автор молодец, если задумывается над наименованиями.

Представьте, схему вашей базы данных , тексты запросов под микроскопом пристально будут рассматривать зарубежные маститые специалисты. Если будет понятно и западным аналитикам и бизнесАм, то будете на коне. Не слушайте местных программистов
В конце концов база велозавода - отправной пример

называйте таблицы МЕЖДУНАРОДНЫМИ наименованиями, ЯНДЕКС-ПЕРЕВОДЧИК в помощь.

Считаю данное предложение абсурдом )))
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38973974
babona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekifrovv,

абсурд - это i_, t_
детский сад. Давайте, еще называйте таблицы dim_, fact_
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38974125
Nekifrovv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
babona,

Не могли бы вы привести пример того как бы вы справились с задачкой? На примере все тех-же items и tickets, т.е. как в конечном варианте будут выглядеть названия табличек?
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38974497
babona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekifrovv,

я не знаю каков бизнес-смысл в tickets, но абстрагируюсь.

Допустим, вы взялись за нелегкую задачищу по формализации продуктового каталога
таблицы:
product_category - категория продуктов
product_subcategory - под. категория продуктов
product - продукты
Каждая из этих таблиц имеет собственные атрибуты

Допустим, эти продукты должны M:M включаться в комплекты, тогда:
product_kit - список продуктовых комплектов (из предположения, что комплектам присваиваются какие-то коды, номера, наименования)
product_kit_product - включение (многие-ко-многим) продуктов в продуктовые комплекты;
наименование придумал в лоб, хотя может быть бизнес оперирует понятием комплектация, тогда - product_package

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


Если же в разных бизнес-сущностях у вас есть также категории, но они сводятся к виду id, name, и нет вероятности расширения их до отдельных сущностей с N-атрибутами, то создают lookUp-справочник для всех таких перечислений.

По поводу dim_, fact_ - сегодня у вас табилца как измерение, а завтра она стала и фактОвой тоже.


Еще круче, если сначала создадите, согласуете словарь бизнес-терминов, в котором будут основные термины и бизнес-синонимы,
всё это введете в Power Designer и модель данных будете проектировать в CASE-средстве с декомпозицией, PK-FK и логическими связими и т.п.
Кстати, Power Designer позвоялет контролировать длину системных наименований полей, правила именования и т.д.
...
Рейтинг: 0 / 0
Мучает вопрос названия таблиц
    #38977258
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Items (Item)
ItemCategories (ItemCats, ItemC, CItem)
ItemToCategory (Item2Category, Item2Cat, Item2C)

Без подчёркивания и с соблюдением регистра.
Единственный недостаток - не каждая СУБД может выдать имя таблицы в том виде в каком она была указана в CREATE TABLE. Большинство СУБД переводят имя таблицы в верхний регистр (что естественно правильно) и не хранят оригинал (что не удобно для средств разработки). Для таких СУБД остаются только подчёркивания:
ITEMS (ITEM)
ITEM_CATEGORIES(ITEM_CATS, ITEM_C, C_ITEM)
ITEM_TO_CATEGORY(ITEM2CATEGORY, ITEM2CAT, ITEM2C)

Имхо всё :)
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Мучает вопрос названия таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]