두 테이블을 함께 매핑하는 테이블의 이름은 무엇입니까? [닫은]


137

두 개의 테이블이 있다고 가정 해 봅시다.

Table: Color
Columns: Id, ColorName, ColorCode

Table: Shape
Columns: Id, ShapeName, VertexList

색상을 모양에 매핑하는 테이블을 무엇이라고해야합니까?

Table: ???
Columns: ColorId, ShapeId

대칭을위한 ColorShape 및 ShapeColor 별칭.
LukLed

2
방금 전에 보지 못했던 비슷한 질문을 보았습니다 : stackoverflow.com/questions/1764483/… . 스레드에서 몇 가지 다른 아이디어 : Shape2Color, ShapeXColor, ShapeColorLink.
devuxer

표준 이름 지정 정션 테이블이있는 경우 이는 opnion을 기반으로하지 않습니다. 그렇다면 그것은 그 질문에 대한 답이되었을 것입니다. 질문을 닫으면 자신과 같은 누군가가 접합 테이블의 이름을 지정하는 표준 방법이 있는지 알 수 있습니다. 그것을 닫은 사람들을 재고하십시오 ...
Lealo

답변:


187

컴퓨터 과학에는 캐시 무효화와 이름 지정 문제
, 필 칼튼의 두 가지 어려운 점이 있습니다.

many-to-many관계 를 나타내는 테이블의 이름이 좋으면 관계를 읽고 이해하기가 더 쉽습니다. 때로는 위대한 이름을 찾는 것이 사소한 것이 아니지만 일반적으로 생각하는 데 시간을 할애 할 가치가 있습니다.

예 : ReaderNewspaper.

A는 Newspaper많은이 Readers과는 Reader많이있다Newspapers

관계를 호출 할 수는 NewspaperReader있지만 Subscription테이블 이름 에 대해 더 잘 전달할 수 있습니다.

Subscription나중에 테이블을 객체에 매핑하려는 경우 이름 이 더 관용적입니다.

many-to-many테이블 이름 지정 규칙 은 관계에 관련된 두 테이블의 이름을 연결 한 것입니다. ColourShape귀하의 경우 합리적인 기본값이 될 것입니다. 그게 내가 닉 D 생각했다 내놓았다 : 두 위대한 제안 Style하고 Texture.


10
+1 : 잘 말씀하셨습니다. 이제 신중하게 선택한 이름으로 향후 유지 관리가 훨씬 쉬워 질 것입니다.
Preet Sangha

115
"컴퓨터 과학에는 캐시 무효화, 명명 및
사별

1
제품 카테고리와 레시피 카테고리가 있다고 가정 해 봅시다. 두 테이블 모두에 recipe_categories와 product_categories가 있으며, 충돌을 방지하기 위해 두 테이블에 대한 "categories"테이블 이름 만 가질 수 없기 때문에 충돌을 방지하기 위해 product와 recipe의 접합 테이블은 "recipe_recipe_categories"및 "product_product_categories"입니다
c9s

3
엄밀히 논리적으로 말하면 연결 정보가 새로운 정보를 추가한다는 의미는 아닙니다. 나는 그것이 접합 테이블에 맞는 단어를 찾으려고 할 때 일어나는 일이라고 생각합니다. 신문을 읽는 사람들은 구독자가되지 않으며 색이없는 모양도 없습니다. "구독자"를 사용하면 독자를 신문에 연결할 때 새로운 정보 (의미)가 추가됩니다. 그리고 모양과 색의 연결을 설명하는 단어가 없습니다. 반대의 것이 없었으므로 이름이 없습니다. 정션 테이블에 새 속성이 제공되지 않았 음을 기억하십시오.
Lealo

35

ColorShapeMap 또는 Style 또는 Texture어떻습니까 .


5
+1 테이블 이름을 결합하는 것보다 더 우아한 무언가를 내기 위해 +1
tosh

22

답의 절반 정도가 흥미 롭다면 다 대다 관계를 구현하는 테이블에 대한 일반적인 용어를 제공하고 나머지 절반은이 특정 테이블의 이름을 제안합니다.

이 테이블 교차점 테이블을 일반적으로 불렀습니다 .

명명 규칙과 관련하여 대부분의 사람들은 다 대다 관계에서 두 테이블의 합병 인 이름을 지정합니다. 따라서이 경우 " ColorShape"또는 " ShapeColor." 그러나 나는 이것이 인위적이고 어색한 것처럼 보입니다.

Joe Celko는 자신의 저서 "SQL Programming Style"에서 이러한 테이블의 이름을 자연 언어로 추천합니다. 예를 들어, 셰이프에 색상이 지정된 경우 테이블 이름을 지정하십시오 ColoredBy. 그러면 다음과 같이 자연스럽게 읽거나 읽는 다이어그램을 가질 수 있습니다.

Shape <-- ColoredBy --> Color

반대로 색상의 모양을 말할 수 있습니다.

Color <-- Colors --> Shape

그러나 이것은 중간 테이블이 Color복수 명명 규칙과 같은 것으로 보입니다 . 너무 혼란 스럽습니다.

아마도 ColoredBy명명 규칙 을 사용하는 것이 가장 분명합니다 . 패시브 음성을 사용하면 이름 지정 규칙이 더 명확 해집니다.


빌 고마워 매우 흥미로운 답변입니다.
devuxer

@Bill : 동의어에 대한 모든 것, 동의어 기본 설정은 명명 규칙에 영향을줍니다.
OMG Ponies

2
HasColor자연어를 사용하는 교차 테이블의 다른 가능한 이름이 될 수 있다고 생각 합니다.
Bill Karwin

1
@ 빌 : 그 이름 지정 규칙으로 가지고있는 문제가 hasColour/ ColouredBy무엇을? DESCRIBE관계를 찾는 데 사용해야 하는 명명의 목적을 무시합니다 .
OMG Ponies

5
OMG Ponies의 의견과 유사하게 다른 것들이 색상을 가질 수 있다면 어떻게됩니까? Text를 Color에 매핑하는 다른 테이블이 있으면 고유 한 이름이 필요합니다. 아마 ShapeHasColorTextHasColor?
devuxer

20

정보를 제공하는 한 원하는대로 테이블 이름을 지정하십시오.

COLOR_SHAPE_XREF

모델 관점에서 테이블을 조인 / 롤러 리 / 상호 참조 테이블이라고합니다. 나는 _XREF관계를 분명하게하기 위해 마지막 에 사용하는 습관을 유지했습니다 .


1
나도 _XREF를 사용합니다 ... 항상 나에게 의미가 있습니다.
James Cronen

아이디어를 발굴했지만 AutoCAD 사용자는 _XREF와 다른 접미사를 찾아야합니다.
Mike

7

이것은 연관 엔티티 이며 종종 자체적으로 중요합니다.

예를 들어, TRAINS와 TIMES 사이의 다 대다 관계는 TIMETABLE을 발생시킵니다.

시간표와 같은 명백한 새로운 실체가 없다면, 두 단어를 함께 실행하여 COLOUR_SHAPE 또는 이와 유사한 것을 부여하는 것이 관례입니다.


6

매핑 테이블이 일반적으로 호출됩니다.

ColorToShape
ColorToShapeMap

실제로, 매핑이라는 용어는 일반적으로 관계가 단방향 (일대일 또는 다수) 일 때 사용됩니다. 그렇다면 일반적으로 다른 테이블이 필요하지 않습니다. 색상이 항상 모양을 결정하면 색상 표에 모양 열을 추가하거나 그 반대의 경우도 가능합니다. 추가 테이블은 일반적으로 관계가 많을 때만 필요합니다.이 경우 매핑이라는 용어가 적합하지 않습니다.
Charles Bretana

이 경우 어떤 모양이든 어떤 색과도 일치 할 수 있으므로 다 대다입니다.
devuxer

2
BTW는 매핑 테이블이든 아니든 To이름 에 사용하는 아이디어와 비슷합니다 . HighlightColor가있는 Shape가있는 경우 어떻게해야합니까? 호출하면 ShapeHighlightColor색상에 매핑 된 ShapeHighlight인지 강조 색상에 매핑 된 Shape인지에 따라 조금 모호합니다. 따라서 ShapeToHighlightColor더 명확 할 수 있습니다.
devuxer

참고 : Oracle (어쨌든 9i / 10g)에는 테이블 이름에 대한 32 자 제한이 있으므로 너무 장황 하게 만들 수 없습니다 .
OMG Ponies

위의 답변을 사용했지만 약간 다른 방식으로 사용했습니다. 즉, Color_Shape_Map입니다. 협약 : Table1_Table2_Map
금붕어

6

DBA와 함께 조인 테이블 이라고 불렀습니다. .

관계에 명시적인 도메인 특정 이름이없는 한 Colour_Shape는 상당히 일반적입니다.


1
그들은 외래 키 명명 규칙과 충돌이 같은 불쾌한 이름으로 끝날하도록 때문에 밑줄 싫어 Colour_Shape_Colour하고 Colour_Shape_Shape.
Dan Bechard

4

나는 보통 정션 테이블이라고 들었습니다. 테이블의 이름을 조인하여 ColorShape 또는 ShapeColor로 지정합니다. Shape가 Shape를 갖는 것보다 Color를 갖는 것이 더 의미가 있다고 생각합니다 ShapeColor.


4

Junction table

또는 Bridge Table

또는 Join Table

또는 Map Table

또는 Link Table

또는 Cross-Reference Table

이것은 두 테이블의 키가 접합 테이블의 복합 기본 키를 형성하는 다 대다 관계를 수행 할 때 사용됩니다.


4

엔터티 이름을 조합하여 사용하는 것이 좋습니다. 따라서 테이블의 이름은 "다 대다"연결을 나타냅니다.

귀하의 경우 :

색상 + 모양 = 색상


"테이블 이름"라우트를 사용하는 경우 단일 버전이 "일반적으로"네임 스페이스 화 된 테이블이기 때문에이 방법이 더 좋습니다.
Andrew Haust

3

중간 테이블 또는 조인 테이블

원하는대로 "ColorShapes"또는 "ColorShape"로 이름을 지정합니다.


3

또한 연관 테이블 이라는 용어를 들었습니다 .

테이블 이름은 ColorShapeAssociations각 행이 해당 색상과 해당 모양 사이의 연결을 나타냅니다. 행이 존재하면 색상이 해당 모양으로오고 모양이 해당 색상으로옵니다. 특정 색상의 모든 행은 색상과 관련된 모든 모양의 집합이며 특정 모양의 행은 모양이 들어간 모든 색상의 집합입니다.


그러나 실제 테이블의 이름은 무엇입니까?
devuxer

테이블이 설명하는 내용에 따라 다릅니다. '오렌지색은 마름모 여야 함', '보라색은 모두 원이어야 함'등으로 표시되면 한 가지 (Colour_of_Shape)라고 부를 수 있습니다. 정의가 느슨한 색상-알려진 모양의 색상으로 단일 모양이 여러 번 나타날 수 있다면 'Shape_Colour_Map'일 것입니다.
Jonathan Leffler

2

일반적으로 대부분의 데이터베이스에는 인덱스, 기본 키 등의 명명 규칙이 있습니다. 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 열의 이름을 짧게 유지하는 데 도움이 될 수 있습니다 (링크에 자체 명명 된 id가 있어야하고 다른 테이블에서 참조되는 경우).

  • 또는 좋아하는 테이블 : purposename_ lnk

1
좋은 ol '헝가리어 표기법, 우리는 다시 만난다.
Dan Bechard

1

저는 항상 "햄버거 테이블"이라는 용어의 일부였습니다. 이유를 모릅니다-그냥 좋은 소리입니다.

그리고 가장 일반적으로 사용되는 테이블에 따라 ShapeColor 또는 ColorShape 테이블을 호출합니다.


1

"다 대다"테이블. "ColourShape"라고 부르거나 그 반대의 경우도 있습니다.


1

이처럼 임의의 것을 대답하기는 어렵지만 기본 관계에 대한 일반적인 설명 대신 실제 도메인에서 무언가를 명명하는 것에 대한 tosh의 아이디어를 선호하는 경향이 있습니다.

종종 이런 종류의 테이블은 도메인 모델에 더 풍부한 것으로 발전하고 연결된 외래 키 이상의 추가 속성을 취합니다.

예를 들어 색상 외에 텍스처를 저장해야하는 경우 어떻게해야합니까? SHAPE_COLOR 테이블을 확장하여 텍스처를 유지하는 것이 약간 펑키하게 보일 수 있습니다.

다른 한편으로, 오늘날 어떤 요구 사항을 기반으로 정보에 입각 한 의사 결정을 내리고 나중에 추가 요구 사항이 도입 될 때 리팩토링 할 준비가되어 있다는 말도 있습니다.

그러나 나중에 소개 할 표면과 같은 추가 속성이 있다는 통찰력이 있다면 SURFACE라고 부릅니다. 그렇지 않다면 SHAPE_COLOR 또는 그와 비슷한 이름으로 부르고 더 시급한 디자인 문제로 넘어가는 데 아무런 문제가 없습니다.


1

어쩌면 그냥 ColoredShape?

질문이 확실하지 않습니다. 이 특정 사례에 관한 것인지 아니면 일반적인 지침을 찾고 있습니까?


0

조인되는 테이블의 정확한 이름 = ColorShape으로 이름을 지정합니다.


0

Developer Art와 관련하여

ColorShape

일반적인 명명 규칙이 될 것입니다. ER 다이어그램에서는 관계가됩니다.


0

이를 상호 참조 테이블이라고합니다.

XREF_COLOR_SHAPE
(
     XCS_ID INTEGER
     C_ID   INTEGER
     S_ID   INTEGER
)

0

그 의미를 사용 r_shape_colors하거나 사용 r_shape_color합니다. 이 경우에
r_대한 대체 xref_.


0

표는 테이블을 가장 잘 나타내는 이름입니다. 이 경우 ShapeColor많은 경우 가 있지만 연결과 다른 이름이 더 좋습니다. 가독성과 같은과에 대한 I 것을 의미없는 접미사, 아니 밑줄없이 접두사.


0

나는 밑줄과 함께 Colour_Shape를 개인적으로 갈 것입니다.이 컨벤션이 꽤 많이 나타났기 때문에. [그러나이 작업을 수행하는 '시적인'방법이 더있을 것이라는 다른 게시물에 동의하십시오.

외래 키는 관계를 식별하는 데 도움이되는 Color & Shape 테이블을 모두 참조하는이 조인 테이블에도 작성해야합니다.


0

내가 개인적으로 좋아하는 테이블을 조인하는 것에 대한 많은 규칙은 'Colour_v_Shape'이며, 사람들은 구어체를 '대표'라고 말합니다.

테이블이 다 대 다 관계를 나타내는 것을 한눈에 알 수 있으며, 복합 단어를 형성 할 수있는 두 단어 (예 : '버터')를 연결하려고 할 때 혼동되는 상황을 피할 수 있습니다. 'Milk'는 'ButterMilk'가 될 수 있지만 'Buttermilk'이라는 엔티티를 나타내야하는 경우 어떻게해야합니까?

이렇게하면 'Butter_v_Milk'와 'Buttermilk'가 혼란스럽지 않습니다.

또한 원래 질문에 Foo Fighters 참조가 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.