İki tabloyu birlikte eşleyen tabloyu ne adlandırmalıyım? [kapalı]


137

Diyelim ki iki masam var:

Table: Color
Columns: Id, ColorName, ColorCode

Table: Shape
Columns: Id, ShapeName, VertexList

Rengi şekillendiren tabloya ne demeliyim?

Table: ???
Columns: ColorId, ShapeId

Simetri için ColorShape ve ShapeColor takma adı.
LukLed

2
Daha önce görmediğim benzer bir soru ile karşılaştım: stackoverflow.com/questions/1764483/… . O iplikten Diğer bazı fikirler: Shape2Color, ShapeXColor, ShapeColorLink.
devuxer

Birleşim tabloları adlandırma standardı olsaydı - o zaman bu opnion tabanlı olmazdı. O zaman sorunun cevabı bu olurdu. Soruyu kapatarak, benim gibi birinin bağlantı tablolarınızı adlandırmanın standart yolları olup olmadığını bilmesi olasılığını kapatmış olursunuz. Lütfen tekrar düşünün - onu
kapatanlar

Yanıtlar:


187

Bilgisayar Bilimlerinde sadece iki zor şey vardır: önbellek geçersiz kılma ve şeyleri adlandırma
- Phil Karlton

Bir tablo temsil eden bir tablo için iyi bir ad geliyor many-to-many ilişkiyi , ilişkinin okunmasını ve anlaşılmasını kolaylaştırır. Bazen harika bir isim bulmak önemsiz değildir, ancak genellikle düşünmek için biraz zaman ayırmaya değer.

Bir örnek: Readerve Newspaper.

A'nın Newspaperçok Readersve Readera'nın çok varNewspapers

İlişkiyi çağırabilirsiniz, NewspaperReaderancak böyle bir isim Subscriptiontablonun ne hakkında olduğunu daha iyi ifade edebilir.

SubscriptionTabloyu daha sonra nesnelere eşlemek istediğinizde de ad daha deyimseldir.

many-to-manyTabloları adlandırma kuralı , ilişkide yer alan her iki tablonun adlarının bir birleşimidir. ColourShapesizin durumunuzda mantıklı bir varsayılan olur. Ben Nick D düşünüyorum dedi geldi : iki büyük önerileri Styleve Texture.


10
+1: iyi dedi - şimdi özenle seçilmiş bir isim, gelecekte bakımı kolaylaştıracak.
Preet Sangha

115
"Bilgisayar Bilimlerinde sadece iki zor şey vardır: önbellek geçersiz kılma, adlandırma ve tek tek hatalar"
Neil McGuigan

1
diyelim ki ürünler için bir kategori ve tarif için başka bir kategori varsa. Her iki tablolar için biz recipe_categories ve product_categories olacak ve biz sadece "kategoriler" tablo adı hem tablolar için, çatışmayı önlemek amacıyla, ürün ve tarifi için kavşak tabloları "recipe_recipe_categories" ve "product_product_categories" olacaktır olamaz çünkü
c9s

3
Açıkça mantıklı bir şekilde konuşan bağlantı bilgileri, yeni bilgi eklemek anlamına gelmez. Birleşim masaları için uygun bir kelime bulmaya çalıştığınızda bu olduğunu düşünüyorum. Gazete okuyan insanlar onları abone yapmaz ve renksiz şekiller olmaz. "Aboneleri" kullanmak, okuyucuları gazetelere bağlarken yeni bilgiler (anlam) ekliyor. Ve şekil ve renk bağlantısını açıklayacak kelimeler yok - hiçbir zaman tam tersi bir şey olmadı, bu yüzden bunun için bir isim yok. Bir kavşak tablosunda yeni özellikler verilmediğini unutmayın.
Lealo

35

Nasıl hakkında ColorShapeMap veya Stil veya Doku .


5
Sadece masaların isimlerine katılmaktan daha zarif bir şey bulmak için +1
tosh

22

Cevapların yaklaşık yarısı, çoktan çoğa bir ilişki uygulayan herhangi bir tablo için genel bir terim verir ve cevapların diğer yarısı, bu özel tablo için bir ad önerir.

Bu tabloları kavşak tabloları olarak adlandırdım genellikle olarak .

Adlandırma kuralları açısından, çoğu insan çoktan çoğa ilişkide iki tablonun birleşimi olan bir isim verir. Bu durumda, " ColorShape" veya "ShapeColor ." Ama bu yapay ve garip görünüyor.

Joe Celko, "SQL Programlama Stili" adlı kitabında bu tabloları doğal bir şekilde adlandırmayı önerir. Örneğin, bir Şekil bir Renk ile renklendirilmişse, tabloyu adlandırın ColoredBy. O zaman, az çok doğal olarak şu şekilde okunan bir diyagramınız olabilir:

Shape <-- ColoredBy --> Color

Tersine, bir Rengin bir Şekli renklendirdiğini söyleyebilirsiniz:

Color <-- Colors --> Shape

Ancak bu, orta tablonun Colorçoğul adlandırma kuralında olduğu gibi görünmektedir. Çok kafa karıştırıcı.

Muhtemelen en açık ColoredByadlandırma kuralını kullanmak . Pasif sesi kullanmanın adlandırma kuralını daha net hale getirmesi ilginçtir.


Bill, teşekkürler. Çok ilginç bir cevap.
devuxer

@Bill: Eşanlamlılar ve eşanlamlı tercihiyle ilgili her şey adlandırma kuralını etkiler.
OMG Ponies

2
Sanırım HasColordoğal dili kullanan kesişim tablosu için başka bir olası isim olabilir.
Bill Karwin

1
@ Fatura: Bu adlandırma kuralında yaşadığım sorun hasColour/ ColouredByne için? DESCRIBEİlişkileri bulmak için kullanmak zorunda isimlendirme amacını yener .
OMG Ponies

5
OMG Ponies'in yorumuna benzer şekilde, başka şeylerin rengi olabilirse ne olur? Metni Renkle eşleyen başka bir tablom varsa, benzersiz bir ada ihtiyacım olur. Belki ShapeHasColorve TextHasColor?
devuxer

20

Bilgilendirici olduğu sürece, tabloyu istediğiniz gibi adlandırın:

COLOR_SHAPE_XREF

Model açısından bakıldığında, tablo birleştirme / corrollary / çapraz başvuru tablosu olarak adlandırılır. _XREFSonunda ilişkiyi belirginleştirmek için kullanma alışkanlığını korudum .


1
Ben de _XREF kullanıyorum ... bu benim için her zaman anlamlı.
James Cronen

Fikri kazıyorum, ancak AutoCAD kullanıcısı olarak _XREF'ten farklı bir sonek bulmalıyım ...
Mike

7

Bu İlişkisel Bir Kuruluştur ve kendi başına oldukça önemlidir.

Örneğin, TRENLER ve ZAMANLAR arasında çoktan çoğa bir ilişki ZAMANLAYABİLİR.

Belirgin yeni bir varlık (zaman çizelgesi gibi) yoksa, kural iki kelimeyi birlikte çalıştırmak ve COLOUR_SHAPE veya benzeri bir şey vermektir.


6

Bir eşleme tablosu buna genellikle denir.

ColorToShape
ColorToShapeMap

Aslında, Haritalama terimi genellikle ilişki tek yönlü olduğunda (bire bir veya birçok) kullanılır. Bu caswe mudur? Eğer öyleyse, genellikle başka bir masaya ihtiyacınız yoktur. Renk her zaman şekli belirlerse, renk tablosuna bir şekil sütunu ekleyin veya tersini yapın. Ek bir tablo genellikle sadece ilişki çoktan çoğa olduğunda gereklidir. Ve bu durumda eşleme terimi uygun değildir.
Charles Bretana

Bu durumda, herhangi bir şekil herhangi bir renkle eşleştirilebilir, bu yüzden çoktan çoğa.
devuxer

2
BTW, bir haritalama tablosu olsun ya da olmasın, Toadında kullanma fikrini seviyorum . HighlightColor ile Shape'niz varsa ne olur? Bunu çağırırsanız ShapeHighlightColor, bir renge eşlenmiş bir ShapeHighlight mı yoksa Vurgu Rengi ile eşlenmiş bir Şekil mi olduğu biraz belirsizdir. Yani, ShapeToHighlightColordaha açık olabilir.
devuxer

Bilginize: Oracle'ın (9i / 10g zaten) tablo adları için 32 karakter sınırı vardır, bu yüzden çok fazla ifade edemezsiniz .
OMG Ponies

Yukarıdaki cevabı kullandım ama biraz farklı bir şekilde. yani Color_Shape_Map. Kongre: Table1_Table2_Map
Japon Balığı

6

Birleştirme tablosu olarak adlandırılan DBA'larla çalıştım .

Colour_Shape, ilişkinin etki alanına özgü bir adı olmadığı sürece oldukça tipiktir.


1
Alt çizgileri sevmiyorum çünkü yabancı anahtar adlandırma kurallarıyla çatışıyorlar ve böylece Colour_Shape_Colourve gibi kötü isimlerle sonuçlanıyorsunuz Colour_Shape_Shape.
Dan Bechard

4

Genellikle bir Kavşak Tablosu denir. Tabloya katıldıkları şeye göre adlandırıyorum, bu nedenle sizin durumunuzda ColorShape veya ShapeColor. Sanırım bir Şeklin bir renge sahip olması, bir Rengin şekle sahip olmaktan daha mantıklıdır, bu yüzden devam edeceğim ShapeColor.


4

Junction table

VEYA Bridge Table

VEYA Join Table

VEYA Map Table

VEYA Link Table

VEYA Cross-Reference Table

Bu, her iki tablodaki anahtarların birleşme tablosunun bileşik birincil anahtarını oluşturduğu çoktan çoğa ilişkilere gittiğimizde kullanılır.


4

Varlık adlarının bir kombinasyonunu kullanmanızı ve çoğul olarak koymanızı öneririm. Böylece tablonun adı "çoktan çoğa" bağlantısını ifade edecektir.

Senin durumunda:

Renk + Şekil = Renkler


Eğer "tablo isimleri" yoluna gidiyorsanız, bu tekil versiyonun isimlendirilmiş bir tablo "genellikle" olacağı için bu daha iyidir.
Andrew Haust

3

Ara Tablo veya Birleştirme Tablosu

Tercihinize bağlı olarak "ColorShapes" veya "ColorShape" olarak adlandırırım


3

İlişkili tablo terimini de duydum .

tablonuz için bir ad ColorShapeAssociations, her satırın o renk ile bu şekil arasındaki ilişkiyi temsil ettiği anlamına gelebilir . Bir satırın varlığı, rengin o şekle geldiğini ve şeklin o renge geldiğini gösterir. Belirli bir renge sahip tüm satırlar, rengin ilişkili olduğu tüm şekiller kümesi olur ve belirli bir şekle yönelik satırlar, şeklin girdiği tüm renklerin kümesi olur ...


Ama asıl tabloya ne isim verirsiniz?
devuxer

Tablonun neyi tanımladığına bağlıdır. 'Turuncu bir şey eşkenar dörtgen olmalı', 'mor her şey bir daire olmalı', vb. Diyorsa, buna bir şey diyebilirsiniz (belki de Colour_of_Shape). Daha gevşek bir tanımsa - şekiller için bilinen renkler, tek bir şeklin birçok kez görünmesine izin verirse - belki de 'Shape_Colour_Map'.
Jonathan Leffler

2

Genel olarak çoğu veritabanında dizinler, birincil anahtar ve benzeri için bir tür adlandırma kuralı vardır. PostgreSQL'de aşağıdaki adlandırma önerilmiştir:

  • birincil anahtar: tablename_columnname_ pkey
  • benzersiz kısıtlama: tablename_columnname_ anahtarı
  • özel kısıtlama: tablename_columnname_ hariç
  • başka amaçlar için dizin: tablename_columnname_ idx
  • yabancı anahtar: tablename_columnname_ fkey
  • sıra: tablename_columnname_ seq
  • tetikleyiciler: tablename_actionname_after | before_ trig

Masanız bana bağlı bir tablo. Yukarıdaki adlandırma doğrultusunda kalmak için aşağıdakileri seçerim:

  • bağlantılı tablo: tablename1_tablename2_ lnk

Tablo nesneleri listesinde, bağlı tablo tablename1'den sonra olacaktır. Bu görsel olarak daha çekici olabilir. Ancak, başkalarının önerdiği gibi bağlantının amacını açıklayan bir ad da seçebilirsiniz. Bu, kimlik sütununun adının kısa tutulmasına yardımcı olabilir (bağlantınızın kendi adlandırılmış kimliği olması gerekiyorsa ve diğer tablolarda belirtilmişse).

  • veya beğenilen tablo: purposename_ lnk

1
Güzel ol 'Macar notasyonu, tekrar buluşuyoruz.
Dan Bechard

1

"Hamburger Tablosu" terimine hep kısmi oldum. Neden bilmiyorum - kulağa hoş geliyor.

Oh, ve ben daha sık kullanılan tablo bağlı olarak tablo ShapeColor veya ColorShape çağırır.


1

"Çok-Çok" tablosu. Ben buna "ColourShape" derim ya da tam tersi.


1

Bir şeyi bu kadar keyfi bir şekilde cevaplamak zor, ama temelde ilişkilerin bazı genel açıklamaları yerine tosh'un gerçek etki alanındaki bir şeyden sonra adlandırma fikrini tercih etme eğilimindeyim.

Çoğu zaman bu tür tablolar etki alanı modeli için daha zengin bir şeye dönüşecek ve bağlantılı yabancı anahtarların üstünde ve ötesinde ek özellikler alacaktır.

Örneğin, renge ek olarak bir doku depolamanız gerekiyorsa ne olur? SHAPE_COLOR tablosunu dokusunu tutacak şekilde genişletmek biraz korkutucu görünebilir.

Öte yandan, bugün sahip olduğunuz gerekliliklere göre iyi bilgilendirilmiş bir karar vermek ve daha sonra ek gereksinimler getirildiğinde yeniden düzenleme yapmaya hazırlanmak için söylenecek bir şey de var.

Tüm bunlar, daha sonra tanıtılan ek yüzey benzeri özelliklerin olacağı bilgisine sahip olsaydım, YÜZEY olarak adlandırırdım. Değilse, onu SHAPE_COLOR ya da bir şey olarak adlandırmak ve daha acil tasarım sorunlarına geçmekte sorunum olmazdı.


1

Belki sadece ColoredShape ?

Soruyu aldığımdan emin değilim. Bu, bu özel durumla mı ilgili yoksa genel yönergeler mi arıyorsunuz?


0

Katılan tabloların tam isimleri ile adlandırırdım = ColorShape.


0

Geliştirici Sanatının neyle ilgili olduğuna bağlı olarak,

ColorShape

olağan bir adlandırma kuralı olurdu. ER diyagramında bu bir ilişki olacaktır.


0

Buna çapraz referans tablosu deyin.

XREF_COLOR_SHAPE
(
     XCS_ID INTEGER
     C_ID   INTEGER
     S_ID   INTEGER
)

0

Ben kullanıyorum r_shape_colorsya r_shape_colorda anlamına bağlı olarak. bu durumda
r_yerine geçer xref_.


0

Oyum, tabloyu en iyi tanımlayan bir isim için. Bu durumda olabilir, ShapeColorancak çoğu durumda birleştirme işleminden farklı bir ad daha iyidir. Okunabilirliği seviyorum ve benim için bu sonek yok, alt çizgi yok ve önek yok.


0

Ben şahsen Colour_Shape, alt çizgisi ile gitmek istiyorum: sadece bu kongre biraz yukarı geldiğini gördüm çünkü. [ama buradaki diğer yazılara muhtemelen bunu yapmanın daha 'şiirsel' yolları olduğunu kabul edin].

Yabancı anahtarların da ilişkiyi tanımlamaya yardımcı olacak Renk ve Şekil tablolarına atıfta bulunacak olan bu birleştirme tablosunda da oluşturulması gerektiğini unutmayın.


0

Şahsen sevdiğim tablolara katılmak için çok şey gördüğüm bir kural, halkın 'tablolara karşı' olarak adlandırdığını duyduğum 'Colour_v_Shape'.

Bir bakışta tablonun çoktan çoğa ilişkisini temsil ettiği çok açıktır ve aksi takdirde bileşik bir kelime oluşturabilecek iki kelimeyi birleştirmeye çalıştığınızda (nadir de olsa) kafa karıştırıcı durumdan kaçınmaya yardımcı olur, örneğin 'Tereyağı' ve 'Süt' 'ButterMilk' olabilir, ama 'Buttermilk' adı verilen bir varlığı da temsil etmeniz gerekiyorsa ne olur?

Bu şekilde yaptığınızda, 'Butter_v_Milk' ve 'Buttermilk' olurdu - karışıklık yok.

Ayrıca, orijinal soruda bir Foo Fighters referansı olduğunu düşünüyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.