Как мне назвать таблицу, которая сопоставляет две таблицы вместе?[закрыто]

StackOverflow https://stackoverflow.com/questions/1813321

Вопрос

Допустим, у меня есть две таблицы:

Table: Color
Columns: Id, ColorName, ColorCode

Table: Shape
Columns: Id, ShapeName, VertexList

Как мне назвать таблицу, которая отображает цвет в форму?

Table: ???
Columns: ColorId, ShapeId
Это было полезно?

Решение

  

Есть только две сложные вещи   Информатика: аннулирование кэша   и называть вещи
- Фил Карлтон

Придание хорошего названия для таблицы, которая представляет отношение многие-ко-многим , облегчает чтение и понимание отношений. Иногда найти отличное имя нетривиально, но обычно стоит потратить некоторое время на размышления.

Пример: Читатель и Газета .

В газете много читателей , а в читателе много газет

Вы могли бы назвать отношение NewspaperReader , но такое имя, как Subscription , могло бы лучше передать смысл таблицы.

Имя Subscription также более идиоматично в случае, если вы захотите сопоставить таблицу с объектами позже.

Соглашение об именовании таблиц many-to-many заключается в объединении имен обеих таблиц, участвующих в отношении. ColourShape будет разумным значением по умолчанию в вашем случае. Тем не менее, я думаю, что Ник D предложил два замечательных предложения: Style и Texture .

Другие советы

Как насчет ColorShapeMap или Style или Texture .

Интересно, что около половины ответов дают общий термин для любой таблицы, которая реализует отношение «многие ко многим», а другая половина ответов предлагает имя для этой конкретной таблицы.

Я назвал эти таблицы таблицами пересечений в целом.

С точки зрения соглашений об именах, большинство людей дают имя, которое является объединением двух таблиц в соотношении «многие ко многим». Поэтому в этом случае " ColorShape " или " ShapeColor . " Но я считаю, что это выглядит искусственно и неловко.

Джо Селко рекомендует в своей книге «Стиль программирования SQL». назвать эти таблицы в некотором естественном языке. Например, если форма окрашена в цвет, то назовите таблицу ColoredBy . Тогда вы могли бы иметь диаграмму, которая более или менее читается естественным образом, как это:

Shape <-- ColoredBy --> Color

И наоборот, вы можете сказать, что Color окрашивает Shape:

Color <-- Colors --> Shape

Но похоже, что средняя таблица - это то же самое, что и Color с соглашением об именовании во множественном числе. Слишком запутанно.

Вероятно, наиболее ясно использовать соглашение об именах ColoredBy . Интересно, что использование пассивного голоса делает соглашение об именах более понятным.

Назовите таблицу как угодно, если она информативна:

COLOR_SHAPE_XREF

С точки зрения модели, эта таблица называется таблицей соединения / следования / перекрестных ссылок. Я сохранил привычку использовать _XREF в конце, чтобы сделать отношения очевидными.

Таблица сопоставления - это то, что обычно называется.

ColorToShape
ColorToShapeMap

Это ассоциативная организация и довольно часто сама по себе важна.

Например, отношение «многие ко многим» между ПОЕЗДАМИ и ВРЕМЕНИМИ порождает РАСПИСАНИЕ.

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

Я обычно слышу, что называется Junction Table. Я называю таблицу тем, к чему она присоединяется, поэтому в вашем случае это либо ColorShape, либо ShapeColor. Я думаю, что для Shape имеет больше смысла иметь цвет, чем для Color, чтобы иметь форму, поэтому я бы выбрал ShapeColor .

Я работал с администраторами баз данных, которые называют это таблицей соединений .

Colour_Shape довольно типично - если только отношение не имеет явного доменно-специфического имени.

Соединительная таблица

ИЛИ Таблица мостов

ИЛИ Присоединиться к таблице

ИЛИ Таблица карт

ИЛИ Таблица ссылок

ИЛИ Таблица перекрестных ссылок

Это используется, когда мы используем отношения «многие ко многим», когда ключи из обеих таблиц образуют составной первичный ключ соединительной таблицы.

Промежуточная таблица или Присоединительная таблица

Я бы назвал это "ColorShapes" или «ColorShape», в зависимости от ваших предпочтений

Я рекомендую использовать комбинацию названий сущностей и поместить их во множественное число. Таким образом, имя таблицы будет выражать связь «многие ко многим».

В вашем случае:

  

Color + Shape = ColorsShapes

Я также слышал, как использовался термин Ассоциативная таблица.

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

В общем, большинство баз данных имеют какое-то соглашение об именах для индексов, первичного ключа и т. д.В PostgreSQL предложено следующее именование:

  • основной ключ:имя_таблицы_имя_столбца_ключ
  • уникальное ограничение:имя_таблицы_имя_столбца_ключ
  • эксклюзивное ограничение:имя_таблицы_имя_столбца_исключая
  • индекс для других целей:имя_таблицы_имя_столбца_идентификатор
  • внешний ключ:имя_таблицы_имя_столбца_черт возьми
  • последовательность:имя_таблицы_имя_столбца_последовательность
  • триггеры:имя_таблицы_имя_действия_после|до_триггер

Ваша таблица для меня является связанной таблицей.Чтобы соответствовать приведенному выше названию, я бы выбрал следующее:

  • связанная таблица:имя_таблицы1_имя_таблицы2_ссылка

В списке объектов таблицы связанная таблица будет после tablename1.Это может быть визуально более привлекательно.Но вы также можете выбрать имя, которое описывает цель ссылки, как предлагали другие.Это может помочь сохранить короткое имя столбца id (если ваша ссылка должна иметь собственный именованный идентификатор и на нее есть ссылки в других таблицах).

  • или понравившаяся таблица:имя_ цели_ссылка

Я всегда был неравнодушен к термину «таблица гамбургеров». Не знаю почему - это звучит просто хорошо.

О, и я бы назвал таблицу ShapeColor или ColorShape в зависимости от того, какая таблица используется чаще.

Таблица «Много-много».Я бы назвал это «ColourShape» или наоборот.

Трудно ответить на что-то столь произвольное, как это, но я склонен предпочесть идею Тоша назвать ее после чего-то в реальной области, а не какое-то общее описание базовых отношений.

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

Например, что если вам нужно хранить текстуру в дополнение к цвету? Может показаться немного странным расширение таблицы SHAPE_COLOR для хранения ее текстуры.

С другой стороны, есть и то, что нужно сказать для принятия обоснованного решения, основанного на ваших сегодняшних требованиях, и готовности к рефакторингу, когда дополнительные требования будут введены позже.

Все это говорит о том, что я бы назвал это ПОВЕРХНОСТЬ, если бы у меня было понимание, что позже появятся дополнительные свойства, подобные поверхностным. В противном случае у меня не возникло бы проблем с тем, чтобы назвать его SHAPE_COLOR или что-то в этом роде и перейти к более насущным проблемам дизайна.

Может быть, просто ColoredShape ?

Я не уверен, что понял вопрос. Это касается именно этого конкретного случая или вы ищете общие рекомендации?

Я бы назвал его точными именами соединяемых таблиц = ColorShape.

В дополнение к тому, что связывает Developer Art,

ColorShape

будет обычным соглашением об именах. На диаграмме ER это будет отношение.

Назовите его таблицей перекрестных ссылок.

XREF_COLOR_SHAPE
(
     XCS_ID INTEGER
     C_ID   INTEGER
     S_ID   INTEGER
)

Я бы использовал r_shape_colors или r_shape_color в зависимости от его значения.
В этом случае r _ будет заменой xref _ .

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

Я бы лично выбрал Colour_Shape с подчеркиванием: только потому, что я видел, что эта конвенция довольно сильно выросла. [но согласен с другими постами здесь, что, возможно, есть более «поэтические» способы сделать это].

Помните, что внешние ключи также должны быть построены на этой таблице соединений, которая будет ссылаться как на Color & amp; Таблицы форм, которые также помогут определить взаимосвязь.

Я часто вижу соглашение о присоединении к таблицам, которое мне лично нравится, «Colour_v_Shape», которое, как я слышал, в народе называют «против таблиц».

С первого взгляда становится ясно, что таблица представляет отношение многие ко многим, и помогает избежать этой (хотя и редкой) запутанной ситуации, когда вы пытаетесь объединить два слова, которые в противном случае могли бы образовать составное слово, например «Butter» и «Milk» могут стать «ButterMilk», но что, если вам также необходимо представить сущность «Buttermilk»?

Делая это таким образом, вы получите «Butter_v_Milk» и «Buttermilk» - без путаницы.

Кроме того, мне нравится думать, что в исходном вопросе есть ссылка на Foo Fighters.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top