Katakanlah saya memiliki dua tabel:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
Apa yang harus saya sebut tabel yang memetakan warna ke bentuk?
Table: ???
Columns: ColorId, ShapeId
Katakanlah saya memiliki dua tabel:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
Apa yang harus saya sebut tabel yang memetakan warna ke bentuk?
Table: ???
Columns: ColorId, ShapeId
Shape2Color
,ShapeXColor
,ShapeColorLink
.Jawaban:
Memberikan nama yang baik untuk tabel yang mewakili
many-to-many
hubungan membuat hubungan lebih mudah dibaca dan dipahami. Terkadang menemukan nama yang bagus bukanlah hal yang sepele, tetapi biasanya ada baiknya meluangkan waktu untuk memikirkannya.Contoh:
Reader
danNewspaper
.A
Newspaper
memiliki banyakReaders
dan aReader
memiliki banyakNewspapers
Anda dapat menyebut hubungan tersebut
NewspaperReader
tetapi nama seperti ituSubscription
mungkin menyampaikan lebih baik tentang tabel tersebut.Namanya
Subscription
juga lebih idiomatis jika Anda ingin memetakan tabel ke objek nanti.Konvensi penamaan
many-to-many
tabel merupakan rangkaian dari nama kedua tabel yang terlibat dalam relasi.ColourShape
akan menjadi default yang masuk akal dalam kasus Anda. Yang mengatakan, saya pikir Nick D datang dengan dua saran bagus:Style
danTexture
.sumber
Bagaimana dengan ColorShapeMap atau Style atau Texture .
sumber
Menarik sekitar setengah dari jawaban memberikan istilah umum untuk setiap tabel yang menerapkan hubungan banyak-ke-banyak, dan separuh jawaban lainnya menyarankan nama untuk tabel khusus ini.
Saya menyebut tabel ini tabel persimpangan umumnya.
Dalam hal konvensi penamaan, kebanyakan orang memberi nama yang merupakan campuran dari dua tabel dalam hubungan banyak-ke-banyak. Jadi dalam kasus ini, "
ColorShape
" atau "ShapeColor
." Tapi menurutku ini terlihat artifisial dan canggung.Joe Celko merekomendasikan dalam bukunya "SQL Programming Style" untuk menamai tabel-tabel ini dengan cara bahasa yang alami. Misalnya, jika Bentuk diwarnai dengan Warna, maka beri nama tabel
ColoredBy
. Kemudian Anda bisa memiliki diagram yang kurang lebih terbaca secara alami seperti ini:Shape <-- ColoredBy --> Color
Sebaliknya, Anda bisa mengatakan Warna mewarnai Bentuk:
Color <-- Colors --> Shape
Tapi ini terlihat seperti tabel tengah yang sama
Color
dengan konvensi penamaan jamak. Terlalu membingungkan.Mungkin paling jelas menggunakan
ColoredBy
konvensi penamaan. Menariknya, penggunaan passive voice membuat konvensi penamaan lebih jelas.sumber
HasColor
bisa menjadi nama lain yang mungkin untuk tabel interseksi yang menggunakan bahasa alami.hasColour
/ColouredBy
untuk apa? Ini mengalahkan tujuan penamaan yang harus digunakanDESCRIBE
untuk mengetahui hubungan.ShapeHasColor
danTextHasColor
?Beri nama tabel sesuka Anda, asalkan informatif:
Dari perspektif model, tabel ini disebut tabel referensi gabungan / korrollary / silang. Saya telah mempertahankan kebiasaan menggunakan
_XREF
di bagian akhir untuk membuat hubungan menjadi jelas.sumber
Ini adalah Entitas Asosiasi dan sering kali cukup signifikan.
Misalnya, hubungan banyak ke banyak antara KERETA API dan TIMES menimbulkan JADWAL.
Jika tidak ada entitas baru yang jelas (seperti jadwal) maka konvensi adalah menjalankan dua kata bersama-sama, memberikan COLOUR_SHAPE atau serupa.
sumber
Tabel pemetaan inilah yang biasanya disebut.
sumber
To
nama. Bagaimana jika Anda memiliki Shape dengan HighlightColor. Jika Anda menyebutnyaShapeHighlightColor
, itu agak ambigu apakah itu ShapeHighlight yang dipetakan ke warna atau Bentuk yang dipetakan ke Warna Sorotan. Jadi,ShapeToHighlightColor
mungkin lebih jelas.Saya telah bekerja dengan DBA yang menyebutnya tabel gabungan .
Colour_Shape cukup umum - kecuali hubungan tersebut memiliki nama khusus domain yang eksplisit.
sumber
Colour_Shape_Colour
danColour_Shape_Shape
.Saya merekomendasikan menggunakan kombinasi nama entitas dan menempatkannya dalam bentuk jamak. Dengan demikian nama tabel akan menyatakan koneksi "banyak-ke-banyak".
Dalam kasus Anda:
sumber
Saya biasanya mendengar yang disebut Meja Persimpangan. Saya memberi nama tabel berdasarkan apa yang digabungkannya, jadi dalam kasus Anda adalah ColorShape, atau ShapeColor. Saya pikir lebih masuk akal untuk Bentuk memiliki warna daripada Warna memiliki bentuk, jadi saya akan menggunakan
ShapeColor
.sumber
Junction table
ATAU
Bridge Table
ATAU
Join Table
ATAU
Map Table
ATAU
Link Table
ATAU
Cross-Reference Table
Ini mulai digunakan saat kita mencari hubungan banyak-ke-banyak di mana kunci dari kedua tabel membentuk kunci primer komposit dari tabel persimpangan.
sumber
Tabel Menengah atau Tabel Gabung
Saya akan menamainya "ColorShapes" atau "ColorShape", tergantung pada preferensi Anda
sumber
Saya juga pernah mendengar istilah tabel asosiatif digunakan.
nama untuk tabel Anda mungkin
ColorShapeAssociations
berarti bahwa setiap baris mewakili hubungan antara warna dan bentuk itu. Adanya baris menyiratkan bahwa warna datang dalam bentuk itu, dan bahwa bentuk itu datang dalam warna itu. Semua baris dengan warna tertentu akan menjadi himpunan semua bentuk yang terkait dengan warna, dan baris untuk bentuk tertentu akan menjadi himpunan semua warna yang bentuknya masuk ...sumber
Secara umum sebagian besar database memiliki semacam konvensi penamaan untuk indeks, kunci primer, dan sebagainya. Di PostgreSQL, penamaan berikut telah disarankan:
Tabel Anda adalah tabel yang ditautkan ke saya. Agar tetap sejalan dengan penamaan di atas, saya akan memilih yang berikut:
Dalam daftar objek tabel, tabel terkait akan berada setelah tablename1. Ini mungkin lebih menarik secara visual. Tetapi Anda juga dapat memilih nama yang menjelaskan tujuan tautan seperti yang disarankan orang lain. Ini mungkin membantu untuk menjaga nama kolom id tetap pendek (jika tautan Anda harus memiliki nama id sendiri dan direferensikan di tabel lain).
sumber
Saya selalu menyukai istilah "Meja Hamburger". Tidak tahu mengapa - kedengarannya bagus.
Oh, dan saya akan memanggil tabel ShapeColor atau ColorShape tergantung pada tabel mana yang lebih umum digunakan.
sumber
Tabel "Banyak-Banyak". Saya akan menyebutnya "Bentuk Warna" atau sebaliknya.
sumber
Sulit untuk menjawab sesuatu yang sewenang-wenang seperti ini, tetapi saya cenderung lebih suka ide tosh untuk menamainya setelah sesuatu di domain sebenarnya daripada beberapa deskripsi umum tentang hubungan yang mendasarinya.
Seringkali tabel semacam ini akan berkembang menjadi sesuatu yang lebih kaya untuk model domain dan akan mengambil atribut tambahan di atas dan di luar kunci asing yang ditautkan.
Misalnya, bagaimana jika Anda perlu menyimpan tekstur selain warna? Mungkin tampak agak funky untuk memperluas tabel SHAPE_COLOR untuk menahan teksturnya.
Di sisi lain, ada juga sesuatu yang bisa dikatakan untuk membuat keputusan yang tepat berdasarkan persyaratan apa yang Anda miliki saat ini dan bersiap untuk melakukan refactor ketika persyaratan tambahan diperkenalkan nanti.
Semua yang dikatakan, saya akan menyebutnya PERMUKAAN jika saya memiliki wawasan bahwa akan ada properti seperti permukaan tambahan yang diperkenalkan nanti. Jika tidak, saya tidak akan kesulitan menyebutnya SHAPE_COLOR atau semacamnya dan beralih ke masalah desain yang lebih mendesak.
sumber
Mungkin saja
ColoredShape
?Saya tidak yakin saya mendapatkan pertanyaan itu. Apakah ini tentang kasus khusus ini atau Anda mencari pedoman umum?
sumber
Saya akan menamainya dengan nama persis dari tabel yang digabungkan = ColorShape.
sumber
Sebagai kecocokan dengan Seni Pengembang yang terkait,
akan menjadi konvensi penamaan biasa. Dalam diagram ER, ini akan menjadi relasi.
sumber
Sebut saja tabel referensi silang.
sumber
Saya akan menggunakan
r_shape_colors
ataur_shape_color
bergantung pada artinya.r_
akan menjadi penggantixref_
dalam kasus ini.sumber
Pilihan saya adalah untuk nama yang paling menggambarkan tabel. Dalam hal ini mungkin saja
ShapeColor
tetapi dalam banyak kasus nama yang berbeda dari penggabungan lebih baik. Saya suka keterbacaan dan bagi saya , itu berarti tidak ada sufiks, tidak ada garis bawah dan tidak ada awalan.sumber
Saya pribadi akan memilih Colour_Shape, dengan garis bawah: hanya karena saya telah melihat konvensi ini muncul cukup banyak. [tapi setuju dengan posting lain di sini bahwa mungkin ada cara yang lebih 'puitis' untuk melakukan ini].
Ingatlah bahwa kunci asing juga harus dibangun di tabel gabungan ini yang akan mereferensikan tabel Warna & Bentuk yang juga akan membantu mengidentifikasi hubungan.
sumber
Sebuah konvensi yang saya lihat banyak untuk menggabungkan tabel yang secara pribadi saya sukai adalah 'Colour_v_Shape', yang saya dengar orang menyebut bahasa sehari-hari sebagai 'versus tabel'.
Sekilas terlihat sangat jelas bahwa tabel mewakili hubungan banyak-ke-banyak, dan membantu menghindari situasi membingungkan (meskipun jarang) saat Anda mencoba menggabungkan dua kata yang mungkin membentuk kata majemuk, misalnya 'Mentega' dan 'Milk' bisa menjadi 'ButterMilk', tapi bagaimana jika Anda juga perlu merepresentasikan entitas yang disebut 'Buttermilk'?
Dengan cara ini, Anda akan mendapatkan 'Butter_v_Milk' dan 'Buttermilk' - tidak ada kebingungan.
Juga, saya suka berpikir ada referensi Foo Fighters di pertanyaan aslinya.
sumber