Powiedzmy, że mam dwie tabele:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
Jak nazwać tabelę odwzorowującą kolor na kształt?
Table: ???
Columns: ColorId, ShapeId
Powiedzmy, że mam dwie tabele:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
Jak nazwać tabelę odwzorowującą kolor na kształt?
Table: ???
Columns: ColorId, ShapeId
Shape2Color
,ShapeXColor
,ShapeColorLink
.Odpowiedzi:
Wymyślenie dobrej nazwy tabeli, która reprezentuje
many-to-many
relację, ułatwia czytanie i zrozumienie relacji. Czasami znalezienie świetnej nazwy nie jest trywialne, ale zazwyczaj warto poświęcić trochę czasu na przemyślenie.Przykład:
Reader
iNewspaper
.A
Newspaper
ma wiele,Readers
aReader
ma wieleNewspapers
Możesz nazwać związek,
NewspaperReader
ale nazwa taka jakSubscription
może lepiej oddać, o czym jest stół.Nazwa
Subscription
jest również bardziej idiomatyczna na wypadek, gdybyś chciał później zmapować tabelę na obiekty.Konwencja nazywania
many-to-many
tabel to konkatenacja nazw obu tabel, które są zaangażowane w relację.ColourShape
byłoby rozsądnym rozwiązaniem w twoim przypadku. To powiedziawszy, myślę, że Nick D miał dwie świetne sugestie:Style
iTexture
.źródło
Jak o ColorShapeMap lub Style lub tekstury .
źródło
Co ciekawe, około połowa odpowiedzi podaje ogólny termin dla dowolnej tabeli, która implementuje relację wiele do wielu, a druga połowa odpowiedzi sugeruje nazwę tej konkretnej tabeli.
Nazwałam te tabele tabelami przecięć ogólnie.
Jeśli chodzi o konwencje nazewnictwa, większość ludzi podaje nazwę, która jest połączeniem dwóch tabel w relacji wiele-do-wielu. W tym przypadku „
ColorShape
” lub „”ShapeColor
. Ale wydaje mi się, że wygląda to sztucznie i niezręcznie.Joe Celko zaleca w swojej książce „Styl programowania w SQL” nazwanie tych tabel w naturalny sposób. Na przykład, jeśli kształt jest pokolorowany kolorem, nazwij tabelę
ColoredBy
. Wtedy możesz mieć diagram, który mniej więcej czyta naturalnie w ten sposób:I odwrotnie, możesz powiedzieć, że kolor nadaje kształt kształtowi:
Ale wygląda na to, że środkowy stół jest tym samym, co
Color
przypadku konwencji nazewnictwa liczby mnogiej. Zbyt zagmatwane.Prawdopodobnie najwyraźniej jest użyć
ColoredBy
konwencji nazewnictwa. Ciekawe, że użycie strony biernej sprawia, że konwencja nazewnictwa jest bardziej przejrzysta.źródło
HasColor
mogłaby to być inna możliwa nazwa tabeli skrzyżowań, która używa języka naturalnego.hasColour
/ColouredBy
po co? To pokonuje cel nazewnictwa, którego należy użyć,DESCRIBE
aby znaleźć relacje.ShapeHasColor
iTextHasColor
?Nazwij tabelę, jak tylko chcesz, o ile ma ona charakter informacyjny:
Z perspektywy modelu tabela jest nazywana tabelą łączenia / korelacji / odniesień krzyżowych. Zachowałem nawyk używania
_XREF
na koniec, aby związek był oczywisty.źródło
To jest jednostka stowarzyszona i często ma znaczenie samo w sobie.
Na przykład relacja wiele do wielu pomiędzy POCIĄGAMI i CZASAMI daje początek TIMETABLE.
Jeśli nie ma oczywistej nowej encji (takiej jak harmonogram), wówczas konwencja polega na uruchomieniu tych dwóch słów razem, dając COLOUR_SHAPE lub podobny.
źródło
Zwykle nazywa się to tablicą mapowania.
źródło
To
w nazwie. A co jeśli masz Shape z HighlightColor. Jeśli to nazwieszShapeHighlightColor
, jest trochę niejednoznaczne, czy jest to ShapeHighlight mapowane na kolor, czy Shape mapowane na Highlight Color. WięcShapeToHighlightColor
może być bardziej jasne.Pracowałem z administratorami baz danych, którzy nazywają to stołem łączenia .
Colour_Shape jest dość typowy - chyba że relacja ma jawną nazwę domeny.
źródło
Colour_Shape_Colour
iColour_Shape_Shape
.Zwykle słyszę, że nazywa się to stołem skrzyżowań. Nazywam tabelę według tego, co łączy, więc w twoim przypadku albo ColorShape, albo ShapeColor. Myślę, że bardziej sensowne jest, aby Kształt miał kolor niż Kolor miał kształt, więc wybrałbym
ShapeColor
.źródło
Junction table
LUB
Bridge Table
LUB
Join Table
LUB
Map Table
LUB
Link Table
LUB
Cross-Reference Table
Jest to używane w przypadku relacji wiele do wielu, w których klucze z obu tabel tworzą złożony klucz podstawowy tabeli skrzyżowań.
źródło
Zalecam użycie kombinacji nazw podmiotów i umieszczenie ich w liczbie mnogiej. Dlatego nazwa tabeli będzie wyrażać połączenie „wiele do wielu”.
W Twoim przypadku:
źródło
Stół pośredni lub stół łączący
Nazwałbym to „ColorShapes” lub „ColorShape”, w zależności od twoich preferencji
źródło
Słyszałem również, że używany jest termin Tabela asocjacyjna .
nazwa tabeli może
ColorShapeAssociations
oznaczać, że każdy wiersz reprezentuje skojarzenie między tym kolorem a kształtem. Istnienie rzędu oznacza, że kolor ma ten kształt i że kształt ma ten kolor. Wszystkie wiersze z określonym kolorem byłyby zbiorem wszystkich kształtów, z którymi jest powiązany kolor, a wiersze dla określonego kształtu byłyby zbiorem wszystkich kolorów, w których pojawił się kształt ...źródło
Generalnie większość baz danych ma jakąś konwencję nazewnictwa indeksów, klucza podstawowego i tak dalej. W PostgreSQL zasugerowano następujące nazewnictwo:
Twój stół jest dla mnie połączonym stołem. Aby zachować zgodność z powyższym nazewnictwem, wybrałbym następujące:
Na liście obiektów tabeli połączona tabela będzie znajdować się po nazwie tabeli1. To może być bardziej atrakcyjne wizualnie. Ale możesz też wybrać nazwę opisującą cel łącza, tak jak sugerowali inni. Może to pomóc w utrzymaniu krótkiej nazwy kolumny id (jeśli twój link musi mieć swój własny nazwany id i odwołuje się do niego w innych tabelach).
źródło
Zawsze miałem słabość do określenia „stół z hamburgerami”. Nie wiem dlaczego - po prostu brzmi dobrze.
Aha, i nazwałbym tę tabelę ShapeColor lub ColorShape w zależności od tego, która jest częściej używana.
źródło
Tabela „Wiele-Wiele”. Nazwałbym to „ColourShape” lub odwrotnie.
źródło
Trudno odpowiedzieć na coś tak arbitralnego, jak to, ale wolę raczej pomysł Tosha, aby nazwać to na cześć czegoś z rzeczywistej domeny, zamiast jakiegoś ogólnego opisu podstawowych relacji.
Dość często tego rodzaju tabele ewoluują w coś bogatszego dla modelu domeny i przyjmują dodatkowe atrybuty poza połączonymi kluczami obcymi.
Na przykład, co zrobić, jeśli oprócz koloru musisz przechowywać teksturę? Może wydawać się nieco dziwne, aby rozszerzyć tabelę SHAPE_COLOR, aby zachować jej teksturę.
Z drugiej strony jest też coś do powiedzenia na temat podejmowania świadomej decyzji w oparciu o obecne wymagania i przygotowania się do refaktoryzacji, gdy dodatkowe wymagania zostaną wprowadzone później.
Wszystko to powiedziawszy, nazwałbym to POWIERZCHNIĄ, gdybym wiedział, że pojawią się dodatkowe właściwości podobne do powierzchni wprowadzone później. Jeśli nie, bez problemu nazwałbym to SHAPE_COLOR lub czymś w tym rodzaju i przechodząc do bardziej palących problemów projektowych.
źródło
Może po prostu
ColoredShape
?Nie jestem pewien, czy dostałem pytanie. Czy chodzi o ten konkretny przypadek, czy szukasz ogólnych wskazówek?
źródło
Nazwałbym go dokładnymi nazwami łączonych tabel = ColorShape.
źródło
W nawiązaniu do tego, co wiąże się z grafiką programisty,
byłaby zwykłą konwencją nazewnictwa. Na diagramie ER byłaby to relacja.
źródło
Nazwij to tabelą porównawczą.
źródło
Używałbym
r_shape_colors
lub wr_shape_color
zależności od jego znaczenia.r_
byłby zamiennikiemxref_
w tym przypadku.źródło
Mój głos dotyczy nazwy, która najlepiej opisuje tabelę. W tym przypadku może tak być,
ShapeColor
ale w wielu przypadkach nazwa inna niż konkatenacja jest lepsza. Podoba mi się czytelność i dla mnie oznacza to brak sufiksów, podkreślników i przedrostków.źródło
Osobiście wybrałbym Colour_Shape z podkreśleniem: tylko dlatego, że widziałem, jak ta konwencja pojawia się dość często. [ale zgadzam się z innymi postami tutaj, że są prawdopodobnie bardziej „poetyckie” sposoby na zrobienie tego].
Należy pamiętać, że klucze obce powinny być również zbudowane na tej tabeli łączenia, która odwoływałaby się do tabel kolorów i kształtów, co również pomogłoby w identyfikacji relacji.
źródło
Konwencją, którą widzę wiele w łączeniu stołów, która osobiście mi się podoba, jest „Colour_v_Shape”, który, jak słyszałem, ludzie nazywają potocznie „kontra stoły”.
Już na pierwszy rzut oka bardzo jasno widać, że tabela przedstawia relację wiele do wielu i pomaga uniknąć tej (choć rzadkiej) mylącej sytuacji, gdy próbujesz połączyć dwa słowa, które w przeciwnym razie mogłyby tworzyć słowo złożone, na przykład „Masło” a „Mleko” może stać się „Maślanką”, ale co by było, gdybyś musiał również reprezentować podmiot o nazwie „Maślanka”?
Robiąc to w ten sposób, uzyskasz „Butter_v_Milk” i „Buttermilk” - bez zamieszania.
Lubię też myśleć, że w oryginalnym pytaniu jest odniesienie do Foo Fighters.
źródło