Как построить таблицу категорий - PullRequest
1 голос
/ 10 июля 2009

Извините за не очень удачный заголовок, но мне любопытно, как люди строят таблицу категорий в SQL на следующем примере

Две колонки: Я БЫ, КАТЕГОРИЯ

Каким из этих способов вы бы назвали столбцы?

ID, КАТЕГОРИЯ

ID, ОПИСАНИЕ

cat_id, CAT_DESC

Или что-то еще? Просто интересно, что делают другие люди. Извините, если это не совсем понятно. Надеюсь, стоит ответить, потому что обратная связь будет отличной.

Ответы [ 8 ]

3 голосов
/ 10 июля 2009

Этот вопрос очень субъективен. Как и в случае большинства проблем программирования, есть миллион и 1 правильный способ сделать что-то. все зависит от ваших личных предпочтений и того, что вы считаете самым легким. Вам нужно подумать, какая информация о категории будет нужна, и какие таблицы вы собираетесь классифицировать. Вам определенно понадобится столбец первичного ключа в вашей таблице, потому что я предполагаю, что вы захотите присоединиться к таблице категорий по другой. но кроме этого, вы можете рассмотреть короткое текстовое поле с названием title или чем-то, и длинное текстовое поле с названием description или что-то в этом роде Если вы собираетесь разрешить пользователям создавать эти объекты через webui, вы можете включить столбец user_id. Опять же, просто подумайте, для чего вам на самом деле нужен этот стол, и спроектируйте его в соответствии со своими потребностями.

-C

2 голосов
/ 11 июля 2009
  • Имя таблицы - категория, которая сама о вас говорит.
  • Имена столбцов могут быть простыми "ID" и "ОПИСАНИЕ"
  • category.id, и category.description выглядят чисто и просто
2 голосов
/ 10 июля 2009

Я предполагаю, что вам нужна таблица категорий с автоматически сгенерированными идентификаторами и соответствующими именами категорий. Если это так, я бы назвал таблицу CATEGORY и имел бы поля ID и NAME.

1 голос
/ 10 июля 2009

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

Лично я бы создал таблицу с именем "category" с полями id_cate, name_cate и description_cate (или что-то похожее, но вы поняли основную идею). Причина, по которой можно объединить каждое имя с помощью «_cate», заключается в том, что когда вы связываете таблицы вместе в запросе, где поля имеют одно и то же имя, вы теперь по расширению будете определять, к какой таблице оно принадлежит, что устраняет необходимость делать

select * from Table1Name inner join Table2Name on Table1Name.ID = Table2Name.ID

Вы просто напишите:

select * from Table1Name inner join Table2Name on id_tab1 = id_tab2

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

1 голос
/ 10 июля 2009

Я бы назвал таблицу «категория» и столбцы «идентификатор», «имя» и «описание». «категория» - это плохое имя для столбца имя / описание, так как оно не говорит вам, что это такое. Имя и описание на самом деле две разные вещи, поэтому две колонки. Вы можете оставить описание, если хотите только имя.

"id" против "category_id" еще более субъективен, просто будьте последовательны.

1 голос
/ 10 июля 2009

Я бы назвал их "Category_ID" и "Category".

Таким образом

  • Если вы объединяете ее с другой таблицей, и у этой таблицы есть столбец «Category_ID», он имеет то же имя, что и «Category_ID» в таблице категорий.
  • Если вы объедините ее с другой таблицей, столбец «Категория» будет четко определен, что было бы не так, если бы у вас было «Описание» (и «Описание» также для элементов в категории). *
1 голос
/ 10 июля 2009

Это действительно ваше дело и то, что требует ваш проект. Вы можете пойти с:

  • id (128)
  • title (Собаки и их владельцы)
  • описание (Информация по обучению для новых владельцев собак)
  • item_count (6)
  • is_active (y)

Зависит от вашего проекта и его требований. Это может быть так просто, как вам нравится, или так сложно. Другие поля могут включать в себя:

  • дата_создана (2009-07-10 05:32:28)
  • parent_id (для подкатегорий)
  • create_by (user123)
  • ...
0 голосов
/ 10 июля 2009

Мне лично не нравится номенклатура "CAT_ID" и "CAT_DESC", я скорее предпочитаю "DESCRIPTION" и "ID".

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

Недостатком подхода "CAT_ID" и т. Д. Является то, что вы можете придумать имена, которые не имеют простого единственного значения.

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

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