Как я должен назвать таблицу, которая отображает две таблицы вместе? [закрытый]
допустим, у меня есть две таблицы:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
что я должен назвать таблицей, которая отображает цвет в форму?
Table: ???
Columns: ColorId, ShapeId
24 ответа:
есть только две трудные вещи в Информатика: аннулирование кэша и называя вещи
--Фил Карлтонпридумать хорошее название для таблицы, которая представляет собой
many-to-many
отношения делают отношения легче читать и понимать. Иногда найти отличное имя не тривиально, но обычно стоит потратить некоторое время на размышления.пример:
Reader
иNewspaper
.A
Newspaper
многоReaders
иReader
многоNewspapers
вы могли бы назвать отношения
NewspaperReader
, а какSubscription
может лучше передать, о чем идет речь в таблице.имя
Subscription
также является более идиоматичным в случае, если вы хотите сопоставить таблицу с объектами позже.соглашение об именовании
many-to-many
таблицы составляется из названий обеих таблиц, участвующих в связи.ColourShape
будет разумный дефолт в вашем случае. Тем не менее, я думаю, что Ник D С два отличных предложения:Style
иTexture
.
назовите таблицу как угодно, если она информативна:
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 довольно типичен-если только отношение не имеет явного доменного имени.
Промежуточная Таблица или Join Table
Я бы назвал его "ColorShapes" или "ColorShape", в зависимости от ваших предпочтений
или
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
?Я не уверен, что понял вопрос. Это связано с этим конкретным случаем или вы ищете общие рекомендации?
в 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.