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


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

Table: Color
Columns: Id, ColorName, ColorCode

Table: Shape
Columns: Id, ShapeName, VertexList

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

Table: ???
Columns: ColorId, ShapeId
24 106

24 ответа:

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

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

пример: Reader и Newspaper.

A Newspaper много Readers и Reader много Newspapers

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

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

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

как о ColorShapeMap или стиль или текстуры.

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

COLOR_SHAPE_XREF

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

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

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

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

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

Shape <-- ColoredBy --> Color

и наоборот, Вы можете сказать, что цвет окрашивает форму:

Color <-- Colors --> Shape

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

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

Это Ассоциативная Сущность и довольно часто значителен сам по себе.

например, много-много отношений между поездами и временем приводит к расписанию.

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

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

Я работал с БД, которые называют его join table.

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

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

ColorToShape
ColorToShapeMap

Промежуточная Таблица или Join Table

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

Junction table

илиBridge Table

илиJoin Table

илиMap Table

илиLink Table

илиCross-Reference Table

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

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

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

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

  • первичный ключ: tablename_columnname_pkey
  • уникальное ограничение: tablename_columnname_ключ
  • эксклюзивное ограничение: tablename_columnname_ excl
  • для других целей: tablename_columnname idx
  • внешний ключ: tablename_columnname_fkey
  • последовательность: tablename_columnname_ seq
  • триггеры: tablename_actionname_after|before_ trig

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

  • связанные таблицы: tablename1_tablename2_lnk

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

  • или понравился стол: purposename_lnk

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

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

Цвет + Форма = ColorsShapes

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

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

таблица"много-много". Я бы назвал это" цветная форма " или наоборот.

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

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

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

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

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

может быть только ColoredShape?

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

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

в adiction к тому, что разработчик искусства имеет отношение,

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, с подчеркиванием: просто потому, что я видел, как эта конвенция появилась совсем немного. [но согласитесь с другими сообщениями здесь, что, вероятно, есть более "поэтические" способы сделать это].

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

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

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

делая это таким образом, у вас будет 'Butter_v_Milk' и 'Buttermilk' - нет путаницы.

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