Tôi nên đặt tên một bảng ánh xạ hai bảng với nhau là gì? [đóng cửa]


137

Hãy nói rằng tôi có hai bảng:

Table: Color
Columns: Id, ColorName, ColorCode

Table: Shape
Columns: Id, ShapeName, VertexList

Tôi nên gọi bảng nào ánh xạ màu để định hình?

Table: ???
Columns: ColorId, ShapeId

Bí danh ColorShape và ShapeColor cho đối xứng.
LukLed

2
Tôi vừa gặp một câu hỏi tương tự mà tôi chưa từng thấy trước đây: stackoverflow.com/questions/1764483/ Lỗi . Một số ý tưởng khác từ chủ đề đó: Shape2Color, ShapeXColor, ShapeColorLink.
devuxer

Nếu có một tiêu chuẩn của bảng nối tên - thì điều này sẽ không dựa trên ý kiến. Sau đó, đó sẽ là câu trả lời cho câu hỏi. Bằng cách đóng câu hỏi, bạn tắt khả năng sở hữu để một người như tôi biết về thời tiết, có những cách tiêu chuẩn để đặt tên cho bảng kết nối của bạn hay không. Vui lòng xem xét lại - những người đã đóng nó ...
Lealo

Câu trả lời:


187

Chỉ có hai điều khó trong Khoa học máy tính: vô hiệu hóa bộ đệm và đặt tên
- Phil Karlton

Đến với một cái tên hay cho một bảng đại diện cho một many-to-manymối quan hệ làm cho mối quan hệ dễ đọc và dễ hiểu hơn. Đôi khi việc tìm kiếm một cái tên tuyệt vời không phải là chuyện nhỏ nhưng thường thì đáng để dành thời gian suy nghĩ.

Một ví dụ: ReaderNewspaper.

A Newspapercó nhiều ReadersReadercó nhiềuNewspapers

Bạn có thể gọi mối quan hệ NewspaperReadernhưng một cái tên như Subscriptioncó thể truyền đạt tốt hơn những gì bảng nói về.

Tên Subscriptioncũng thành ngữ hơn trong trường hợp bạn muốn ánh xạ bảng tới các đối tượng sau này.

Quy ước cho việc đặt tên many-to-manybảng là nối các tên của cả hai bảng có liên quan đến mối quan hệ. ColourShapesẽ là một mặc định hợp lý trong trường hợp của bạn. Điều đó nói rằng, tôi nghĩ Nick D đã đưa ra hai gợi ý tuyệt vời: StyleTexture.


10
+1: cũng được nói - một cái tên được lựa chọn cẩn thận bây giờ sẽ giúp việc bảo trì dễ dàng hơn rất nhiều trong tương lai.
Preet Sangha

115
"Chỉ có hai điều khó khăn trong Khoa học Máy tính: vô hiệu hóa bộ đệm, đặt tên và lỗi do lỗi"
Neil McGuigan

1
giả sử, nếu có một danh mục cho sản phẩm và một danh mục khác cho công thức. đối với cả hai bảng, chúng tôi sẽ có tên công thức và danh mục sản phẩm và vì chúng tôi không thể chỉ tên bảng "danh mục" cho cả hai bảng, để ngăn ngừa xung đột, các bảng nối cho sản phẩm và công thức sẽ là "công thức_recipe_clists" và "sản phẩm_product_c loại"
c9s

3
Nói một cách nghiêm túc thông tin kết nối thông tin không có nghĩa là thêm thông tin mới. Tôi nghĩ đó là những gì xảy ra khi bạn cố gắng tìm một từ phù hợp cho các bảng nối. Mọi người đọc báo không biến họ thành người đăng ký và không có hình dạng mà không có màu sắc. Sử dụng "thuê bao" là thêm thông tin mới (ý nghĩa) khi kết nối độc giả với báo. Và không có từ nào để mô tả sự kết nối của hình dạng và màu sắc - chưa bao giờ có một cái gì đó ngược lại, do đó không có tên cho nó. Hãy nhớ rằng không có thuộc tính mới nào được đưa ra trong bảng nối.
Lealo

35

Làm thế nào về ColorShapeMap hoặc Style hoặc Texture .


5
+1 để đến với một cái gì đó thanh lịch hơn là chỉ tham gia tên của các bảng
tosh

22

Thú vị về một nửa câu trả lời đưa ra một thuật ngữ chung cho bất kỳ bảng nào thực hiện mối quan hệ nhiều-nhiều và nửa còn lại của câu trả lời gợi ý một tên cho bảng cụ thể này.

Tôi gọi những bảng này giao nhau bảng nói chung.

Về mặt quy ước đặt tên, hầu hết mọi người đều đặt tên là một sự pha trộn của hai bảng trong mối quan hệ nhiều-nhiều. Vì vậy, trong trường hợp này, " ColorShape" hoặc " ShapeColor." Nhưng tôi thấy điều này có vẻ giả tạo và vụng về.

Joe Celko khuyến nghị trong cuốn sách "Phong cách lập trình SQL" của mình để đặt tên cho các bảng này theo một cách thức ngôn ngữ tự nhiên. Chẳng hạn, nếu một Shape được tô màu bởi Color, thì hãy đặt tên cho bảng ColoredBy. Sau đó, bạn có thể có một sơ đồ ít nhiều đọc tự nhiên như thế này:

Shape <-- ColoredBy --> Color

Ngược lại, bạn có thể nói Màu sắc màu sắc Hình dạng:

Color <-- Colors --> Shape

Nhưng điều này có vẻ như bảng giữa là giống như Colorvới một quy ước đặt tên số nhiều. Quá khó hiểu.

Có lẽ rõ ràng nhất để sử dụng ColoredByquy ước đặt tên. Điều thú vị là việc sử dụng giọng nói thụ động làm cho quy ước đặt tên rõ ràng hơn.


Hóa đơn, cảm ơn. Câu trả lời rất thú vị.
devuxer

@Bill: Tất cả về các từ đồng nghĩa và sở thích từ đồng nghĩa ảnh hưởng đến quy ước đặt tên.
Ngựa Non OMG

2
Tôi cho rằng HasColorcó thể là một tên khác có thể cho bảng giao nhau sử dụng ngôn ngữ tự nhiên.
Bill Karwin

1
@Bill: Vấn đề tôi gặp phải với quy ước đặt tên đó là hasColour/ ColouredByđể làm gì? Nó đánh bại mục đích đặt tên phải sử dụng DESCRIBEđể tìm hiểu các mối quan hệ.
Ngựa vằn OMG

5
Tương tự như nhận xét của OMG Ponies, điều gì xảy ra nếu những thứ khác có thể có màu? Nếu tôi có một bảng khác ánh xạ Văn bản thành Màu, tôi sẽ cần một tên duy nhất. Có lẽ ShapeHasColorTextHasColor?
devuxer

20

Đặt tên cho bảng bất cứ thứ gì bạn thích, miễn là có nhiều thông tin:

COLOR_SHAPE_XREF

Từ góc độ mô hình, bảng được gọi là bảng tham chiếu / tham chiếu / chéo. Tôi đã giữ thói quen sử dụng _XREFvào cuối để làm cho mối quan hệ rõ ràng.


1
Tôi cũng sử dụng _XREF ... nó luôn có ý nghĩa với tôi.
James Cronen

Tôi khai thác ý tưởng, nhưng là một người dùng AutoCAD, tôi cần tìm một hậu tố khác với _XREF ...
Mike

7

Đây là một thực thể liên kết và thường khá có ý nghĩa theo đúng nghĩa của nó.

Ví dụ: nhiều mối quan hệ giữa nhiều TRAINS và TIMES tạo ra THỜI GIAN.

Nếu không có thực thể mới rõ ràng (chẳng hạn như thời gian biểu) thì quy ước là chạy hai từ với nhau, đưa ra COLOUR_SHAPE hoặc tương tự.


6

Một bảng ánh xạ là cái mà cái này thường được gọi.

ColorToShape
ColorToShapeMap

Trên thực tế, thuật ngữ Lập bản đồ thường được sử dụng khi mối quan hệ là đơn hướng (một đến một hoặc nhiều) Đây có phải là vấn đề không? Nếu vậy, nói chung bạn không cần một bảng khác. Nếu màu luôn xác định hình dạng, sau đó thêm một cột hình vào bảng màu hoặc ngược lại. Một bảng bổ sung thường chỉ cần thiết khi mối quan hệ nhiều với nhiều người .. Và trong trường hợp đó, ánh xạ thuật ngữ là không phù hợp.
Charles Bretana

Trong trường hợp này, bất kỳ hình dạng nào cũng có thể phù hợp với bất kỳ màu nào, vì vậy nó là nhiều-nhiều.
devuxer

2
BTW, cho dù đó là bảng ánh xạ hay không, tôi giống như ý tưởng sử dụng Totên. Điều gì nếu bạn có Shape với HighlightColor. Nếu bạn gọi nó ShapeHighlightColor, sẽ hơi mơ hồ cho dù đó là ShapeHighlight được ánh xạ thành màu hay Hình được ánh xạ thành Màu nổi bật. Vì vậy, ShapeToHighlightColorcó thể rõ ràng hơn.
devuxer

FYI: Oracle (9i / 10g anyways) có giới hạn 32 ký tự cho tên bảng, vì vậy bạn không thể quá dài dòng.
Ngựa Non OMG

Tôi đã sử dụng câu trả lời ở trên nhưng theo một cách khác. tức là Color_Shape_Map. Hội nghị: Table1_Table2_Map
Cá vàng

6

Tôi đã làm việc với các DBA gọi đó là bảng tham gia .

Colour_Shape khá điển hình - trừ khi mối quan hệ có tên miền cụ thể rõ ràng.


1
Tôi không thích dấu gạch dưới vì chúng mâu thuẫn với các quy ước đặt tên khóa ngoại để bạn kết thúc với những cái tên khó chịu như Colour_Shape_ColourColour_Shape_Shape.
Dan Bechard

4

Tôi thường nghe rằng được gọi là Bảng nối. Tôi đặt tên cho bảng theo những gì nó tham gia, vì vậy trong trường hợp của bạn là ColorShape hoặc ShapeColor. Tôi nghĩ rằng nó có ý nghĩa hơn đối với một Hình dạng có màu sắc hơn là Màu sắc có hình dạng, vì vậy tôi sẽ đi cùng ShapeColor.


4

Junction table

HOẶC LÀ Bridge Table

HOẶC LÀ Join Table

HOẶC LÀ Map Table

HOẶC LÀ Link Table

HOẶC LÀ Cross-Reference Table

Điều này được sử dụng khi chúng ta thực hiện các mối quan hệ nhiều-nhiều trong đó các khóa từ cả hai bảng tạo thành khóa chính tổng hợp của bảng nối.


4

Tôi khuyên bạn nên sử dụng kết hợp tên của các thực thể và đặt chúng ở số nhiều. Do đó, tên của bảng sẽ thể hiện kết nối "nhiều-nhiều".

Trong trường hợp của bạn:

Màu sắc + Hình dạng = Màu sắc Hình dạng


Nếu bạn đang đi theo lộ trình "tên của các bảng", điều này tốt hơn vì phiên bản số ít sẽ "thường" là một bảng được đặt tên.
Andrew Haust

3

Bảng trung gian hoặc Bảng tham gia

Tôi sẽ đặt tên là "ColorShapes" hoặc "ColorShape", tùy theo sở thích của bạn


3

Tôi cũng đã nghe thuật ngữ Associative bảng được sử dụng.

một tên cho bảng của bạn có thể có ColorShapeAssociationsnghĩa là mỗi hàng đại diện cho một liên kết giữa màu đó và hình dạng đó. Sự tồn tại của một hàng ngụ ý rằng màu sắc có trong hình dạng đó, và hình dạng đó có màu sắc đó. Tất cả các hàng có một màu cụ thể sẽ là tập hợp của tất cả các hình dạng mà màu được liên kết và các hàng cho một hình cụ thể sẽ là tập hợp tất cả các màu có hình dạng ...


Nhưng bạn sẽ đặt tên cho bảng thực tế là gì?
devuxer

Nó phụ thuộc vào những gì bảng được mô tả. Nếu nó nói 'bất cứ thứ gì màu cam phải là hình thoi', 'bất cứ thứ gì màu tím phải là hình tròn', v.v., thì bạn có thể gọi nó là một thứ (có lẽ là Colour_of_Shape). Nếu đó là định nghĩa lỏng hơn - màu sắc đã biết cho hình dạng, cho phép một hình dạng xuất hiện nhiều lần - thì có lẽ 'Shape_Colour_Map'.
Jonathan Leffler

2

Nói chung, hầu hết các cơ sở dữ liệu đều có một số loại quy ước đặt tên cho các chỉ mục, khóa chính và vv. Trong PostgreSQL, cách đặt tên sau đây đã được đề xuất:

  • khóa chính: tablename_columnname_ pkey
  • ràng buộc duy nhất: tablename_columnname_ key
  • ràng buộc độc quyền: tablename_columnname_ excl
  • chỉ mục cho các mục đích khác: tablename_columnname_ idx
  • khóa ngoại: tablename_columnname_ fkey
  • trình tự: tablename_columnname_ seq
  • kích hoạt: tablename_actionname_after | before_ trig

Bảng của bạn là một bảng liên kết với tôi. Để phù hợp với cách đặt tên ở trên, tôi sẽ chọn như sau:

  • bảng được liên kết: tablename1_tablename2_ lnk

Trong danh sách các đối tượng bảng, bảng được liên kết sẽ nằm sau tablename1. Điều này có thể hấp dẫn trực quan hơn. Nhưng bạn cũng có thể chọn một tên mô tả mục đích của liên kết như những người khác đã đề xuất. Điều này có thể giúp giữ tên của cột id ngắn (nếu liên kết của bạn phải có id tên riêng và được tham chiếu trong các bảng khác).

  • hoặc bảng thích: purposeename_ lnk

1
Tốt ký hiệu Hungary, chúng ta gặp lại nhau.
Dan Bechard

1

Tôi đã luôn luôn là một phần của thuật ngữ "Bảng Hamburger". Không biết tại sao - nghe có vẻ tốt.

Ồ, và tôi sẽ gọi bảng ShapeColor hoặc ColorShape tùy thuộc vào bảng nào được sử dụng phổ biến hơn.


1

Bảng "Nhiều-Nhiều". Tôi sẽ gọi nó là "ColourShape" hoặc ngược lại.


1

Thật khó để trả lời một cái gì đó tùy tiện như thế này, nhưng tôi có xu hướng thích ý tưởng đặt tên theo tên của một cái gì đó trong miền thực tế thay vì mô tả chung về các mối quan hệ cơ bản.

Thông thường, loại bảng này sẽ phát triển thành một thứ phong phú hơn cho mô hình miền và sẽ đảm nhận các thuộc tính bổ sung ở trên và ngoài các khóa ngoại được liên kết.

Ví dụ, nếu bạn cần lưu trữ một kết cấu ngoài màu sắc thì sao? Có vẻ hơi thú vị khi mở rộng bảng SHAPE_COLOR để giữ kết cấu của nó.

Mặt khác, cũng có điều gì đó để nói về việc đưa ra quyết định sáng suốt dựa trên những yêu cầu bạn có ngày hôm nay và sẵn sàng tái cấu trúc khi các yêu cầu bổ sung được đưa ra sau.

Tất cả những gì đã nói, tôi sẽ gọi nó là BỀ MẶT nếu tôi có cái nhìn sâu sắc rằng sẽ có thêm các đặc tính giống bề mặt được giới thiệu sau. Nếu không, tôi sẽ không gặp vấn đề gì khi gọi nó là SHAPE_COLOR hoặc một cái gì đó tương tự và chuyển sang các vấn đề thiết kế cấp bách hơn.


1

Có lẽ chỉ ColoredShape?

Tôi không chắc chắn tôi nhận được câu hỏi. Đây là về trường hợp cụ thể này hay bạn đang tìm kiếm hướng dẫn chung?


0

Tôi sẽ đặt tên cho nó với tên chính xác của các bảng được tham gia = ColorShape.


0

Để quảng cáo cho những gì Developer Art có liên quan,

ColorShape

sẽ là một quy ước đặt tên thông thường. Trong sơ đồ ER, nó sẽ là một mối quan hệ.


0

Gọi nó là một bảng tham chiếu chéo.

XREF_COLOR_SHAPE
(
     XCS_ID INTEGER
     C_ID   INTEGER
     S_ID   INTEGER
)

0

Tôi sẽ sử dụng r_shape_colorshoặc r_shape_colortùy thuộc vào ý nghĩa của nó.
r_sẽ thay thế xref_trong trường hợp này.


0

Phiếu bầu của tôi là cho một cái tên mô tả bảng tốt nhất. Trong trường hợp này có thể là như ShapeColorvậy nhưng trong nhiều trường hợp, một cái tên khác với cách ghép là tốt hơn. Tôi thích khả năng đọc và đối với tôi , điều đó có nghĩa là không có hậu tố, không có dấu gạch dưới và không có tiền tố.


0

Cá nhân tôi sẽ chọn Colour_Shape, với dấu gạch dưới: chỉ vì tôi đã thấy quy ước này xuất hiện khá nhiều. [nhưng đồng ý với các bài đăng khác ở đây rằng có lẽ có nhiều cách 'thi vị' hơn để làm điều này].

Hãy nhớ rằng các khóa ngoại cũng nên được xây dựng trên bảng tham gia này, tham chiếu cả hai bảng Màu sắc & Hình dạng cũng sẽ giúp xác định mối quan hệ.


0

Một quy ước tôi thấy rất nhiều khi tham gia các bảng mà cá nhân tôi thích là 'Colour_v_Shape', mà tôi đã nghe dân gian gọi chung là "so với bảng".

Điều này cho thấy rất rõ rằng bảng biểu thị mối quan hệ nhiều-nhiều và giúp tránh tình huống khó hiểu đó (mặc dù hiếm gặp) khi bạn cố gắng ghép hai từ có thể tạo thành một từ ghép, ví dụ như 'Bơ' và 'Sữa' có thể trở thành 'ButterMilk', nhưng nếu bạn cũng cần đại diện cho một thực thể gọi là 'Buttermilk' thì sao?

Làm theo cách này, bạn sẽ có 'Butter_v_Milk' và 'Buttermilk' - không có sự nhầm lẫn.

Ngoài ra, tôi muốn nghĩ rằng có một tài liệu tham khảo Foo Fighters trong câu hỏi ban đầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.