ما الذي يجب أن أسميه جدولًا يقوم بتعيين جدولين معًا؟ [مغلق
-
06-07-2019 - |
سؤال
لنفترض أن لدي طاولتان:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
ما الذي يجب أن أسميه الجدول الذي يخطط اللون لتشكيله؟
Table: ???
Columns: ColorId, ShapeId
المحلول
لا يوجد سوى شيئين صعبة في علوم الكمبيوتر: إبطال ذاكرة التخزين المؤقت وتسمية الأشياء
-- فيل كارلتون
الخروج باسم جيد لجدول يمثل أ many-to-many
العلاقة تجعل العلاقة أسهل في القراءة والفهم. في بعض الأحيان يكون العثور على اسم رائع ليس تافهًا ولكن عادةً ما يستحق قضاء بعض الوقت في التفكير فيه.
مثال: Reader
و Newspaper
.
أ Newspaper
لديه الكثير Readers
و Reader
لديه الكثير Newspapers
يمكنك استدعاء العلاقة NewspaperReader
لكن اسم مثل Subscription
قد تنقل بشكل أفضل ماهية الجدول.
الاسم Subscription
كما هو أكثر احتمالا في حالة رغبتك في تعيين الجدول للكائنات في وقت لاحق.
اتفاقية التسمية many-to-many
الجداول هي تسلسل لأسماء كلا الجدولين المتورطين في العلاقة. ColourShape
سيكون افتراضيًا معقولًا في قضيتك. ومع ذلك ، أعتقد نيك د خطرت اقتراحان رائعان: Style
و Texture
.
نصائح أخرى
ماذا عن colorshapemap أو أسلوب أو نَسِيج.
من المثير للاهتمام حول نصف الإجابات ، يعطي مصطلح عام لأي جدول ينفذ علاقة متعددة إلى العديد ، والنصف الآخر من الإجابات يشير إلى اسم لهذا الجدول المحدد.
اتصلت بهذه الجداول جداول التقاطع عموما.
فيما يتعلق بتسمية الاتفاقيات ، فإن معظم الناس يعطون اسمًا يمثل مزيجًا من الجدولين في العلاقة العديدة. لذلك في هذه الحالة ، "ColorShape
" أو "ShapeColor
. "لكنني أجد أن هذا يبدو اصطناعيًا ومحرجًا.
يوصي Joe Celko في كتابه "SQL Programming Style" بتسمية هذه الجداول بطريقة اللغة الطبيعية. على سبيل المثال ، إذا تم تلوين شكل بلون ، ثم قم بتسمية الجدول ColoredBy
. ثم يمكن أن يكون لديك مخطط يقرأ أكثر أو أقل بشكل طبيعي مثل هذا:
Shape <-- ColoredBy --> Color
على العكس من ذلك ، يمكنك أن تقول ألوان اللون الشكل:
Color <-- Colors --> Shape
لكن هذا يبدو أن الجدول الأوسط هو نفس الشيء Color
مع اتفاقية تسمية الجمع. مربكة جدا.
ربما الأكثر وضوحا لاستخدام ColoredBy
اصطلاح التسمية. من المثير للاهتمام أن استخدام الصوت السلبي يجعل اتفاقية التسمية أكثر وضوحًا.
قم بتسمية الجدول مهما كانت ، طالما أنها مفيدة:
COLOR_SHAPE_XREF
من منظور النموذج ، يسمى الجدول جدول مرجع مرجعي Join/Corrollary/Cross. لقد ظللت عادة استخدام _XREF
في النهاية لجعل العلاقة واضحة.
طاولة رسم الخرائط هو ما يسمى هذا عادة.
ColorToShape
ColorToShapeMap
هذا كيان ترابط وغالبًا ما تكون مهمة في حد ذاتها.
على سبيل المثال ، هناك الكثير من العلاقات بين القطارات والأوقات تؤدي إلى جدول زمني.
إذا لم يكن هناك كيان جديد واضح (مثل الجدول الزمني) ، فإن الاتفاقية تتمثل في تشغيل الكلمتين معًا ، مما يعطي Colour_shape أو ما شابه ذلك.
عادة ما أسمع ذلك يسمى جدول تقاطع. أسمي الجدول بما ينضم إليه ، لذلك في حالتك إما colorshape ، أو ShapeColor. أعتقد أنه من المنطقي أن يكون للشكل لونًا أكثر من أن يكون لونه يكون له شكل ShapeColor
.
لقد عملت مع DBAs التي تسميها أ انضم إلى الجدول.
Colour_shape نموذجي إلى حد ما - ما لم يكن للعلاقة اسمًا صريحًا خاصًا بالمجال.
أو Bridge Table
أو Join Table
أو Map Table
أو Link Table
أو Cross-Reference Table
يتم استخدام ذلك عندما نذهب إلى علاقات كثيرة إلى حد ما حيث تشكل المفاتيح من كلا الجدولين المفتاح الأساسي المركب لجدول الوصلات.
الجدول الوسيط أو أ انضم إلى الجدول
أود تسميته "colorshapes" أو "colorshape" ، اعتمادًا على تفضيلاتك
أوصي باستخدام مجموعة من أسماء الكيانات ووضعها في الجمع. وبالتالي فإن اسم الجدول سوف يعبر عن الاتصال "العديد من العدد".
في حالتك:
لون + شكل = ألوان
لقد سمعت أيضًا المصطلح ترابطي الجدول المستخدمة.
قد يكون اسم طاولتك ColorShapeAssociations
وهذا يعني أن كل صف يمثل ارتباطًا بين هذا اللون وهذا الشكل. يشير وجود صف إلى أن اللون يأتي بهذا الشكل ، وأن الشكل يأتي في هذا اللون. جميع الصفوف ذات اللون المحدد ستكون مجموعة من جميع الأشكال التي يرتبط بها اللون ، والصفوف لشكل معين ستكون مجموعة من جميع الألوان التي جاءت شكلها ...
بشكل عام ، تحتوي معظم قواعد البيانات على نوع من اتفاقية التسمية للفهارس والمفتاح الأساسي وما إلى ذلك. في postgresql تم اقتراح التسمية التالية:
- المفتاح الأساسي: tablename_columnname_pkey
- قيود فريدة: tablename_columnname_مفتاح
- القيد الحصري: tablename_columnname_غير شامل
- فهرس لأغراض أخرى: tablename_columnname_IDX
- المفتاح الخارجي: TableName_ColumnName_fkey
- التسلسل: TableName_ColumnName_seq
- المشغلات: tablename_actionname_after | قبل _علم حساب المثلثات
طاولتك عبارة عن طاولة مرتبطة لي. للبقاء متوافقًا مع التسمية أعلاه ، سأختار ما يلي:
- الجدول المرتبط: tablename1_tablename2_LNK
في قائمة كائنات الجدول ، سيكون الجدول المرتبط بعد Tablename1. قد يكون هذا أكثر جاذبية بصريًا. ولكن يمكنك أيضًا اختيار اسم يصف الغرض من الرابط مثل الآخرين. قد يساعد هذا في الحفاظ على اسم عمود المعرف قصيرًا (إذا كان يجب أن يكون للرابط معرفه المسماة ويتم الإشارة إليه في الجداول الأخرى).
- أو الجدول المحبوب: purposename_LNK
لقد كنت دائمًا جزءًا من مصطلح "طاولة الهامبرغر". لا أعرف لماذا - يبدو الأمر جيدًا.
أوه ، وأود أن أسمي الجدول appecolor أو colorshape اعتمادًا على الجدول الأكثر استخدامًا.
جدول "العديد من العان". أود أن أسميها "colourshape" أو العكس.
من الصعب الإجابة على شيء تعسفي مثل هذا ، لكنني أميل إلى تفضيل فكرة Tosh عن تسمية ذلك بعد شيء ما في المجال الفعلي بدلاً من وصف عام للعلاقات الأساسية.
غالبًا ما يتطور هذا النوع من الجدول إلى شيء أكثر ثراءً لنموذج المجال وسيأخذ سمات إضافية تتجاوز المفاتيح الأجنبية المرتبطة.
على سبيل المثال ، ماذا لو كنت بحاجة إلى تخزين نسيج بالإضافة إلى اللون؟ قد يبدو من غير المحلي بعض الشيء توسيع نطاق الجدول Lage_Color لعقد نسيجه.
من ناحية أخرى ، هناك أيضًا شيء يمكن قوله لاتخاذ قرار مستنير بناءً على المتطلبات التي لديك اليوم والاستعداد لإعادة تشكيلها عند تقديم متطلبات إضافية لاحقًا.
بعد كل هذا ، أود أن أسميها سطحًا إذا كان لدي نظرة على أنه ستكون هناك خصائص إضافية تشبه السطح تم تقديمها لاحقًا. إذا لم يكن الأمر كذلك ، فلن أجد أي مشاكل في تسميته شكل _color أو شيء من النوع والانتقال إلى مشاكل في التصميم أكثر إلحاحًا.
ربما فقط ColoredShape
?
لست متأكدًا من أنني أحصل على السؤال. هل هذا حول هذه الحالة المحددة أم أنك تبحث عن إرشادات عامة؟
أود تسميته بالأسماء الدقيقة للجداول التي يتم ربطها = colorshape.
في إبداع ما يرتبط به فن المطور ،
ColorShape
سيكون اتفاقية التسمية المعتادة. في مخطط ER ، سيكون علاقة.
نسميها جدول مرجعي متقاطع.
XREF_COLOR_SHAPE
(
XCS_ID INTEGER
C_ID INTEGER
S_ID INTEGER
)
سأستخدم r_shape_colors
أو r_shape_color
اعتمادا على معناها.
r_
سوف بديل ل xref_
في هذه الحالة.
تصويتي هو اسم يصف الجدول بشكل أفضل. في هذه الحالة قد يكون ShapeColor
ولكن في كثير من الحالات ، يكون الاسم مختلفًا عن التسلسل أفضل. أنا أحب قابلية القراءة و أنا, وهذا يعني عدم وجود اللواحق ، ولا توجد سطورة ، ولا بادئات.
أود أن أذهب شخصياً إلى Colour_shape ، مع الترابط: لمجرد أنني رأيت أن هذه الاتفاقية تظهر قليلاً. [لكن أتفق مع المشاركات الأخرى هنا على الأرجح أن هناك طرقًا أكثر "شعرية" للقيام بذلك].
ضع في اعتبارك أنه ينبغي أيضًا بناء المفاتيح الأجنبية على جدول الانضمام هذا الذي سيشير إلى كل من جداول الألوان والشكل التي ستساعد أيضًا في تحديد العلاقة.
الاتفاقية التي أراها كثيرًا للانضمام إلى الجداول التي أحبها شخصيًا هي "Colour_v_shape" ، والتي سمعت أنها تشير إلى العامية باسم "الجداول".
يوضح الأمر بشكل واضح في لمحة أن الجدول يمثل علاقة عديدة ، ويساعد على تجنب ذلك (وإن نادر) الموقف المربك عندما تحاول تسلسل كلمتين قد تشكل كلمة مركبة ، على سبيل المثال "الزبدة" و "الحليب" قد يصبح "اللبن" ، ولكن ماذا لو كنت بحاجة أيضًا لتمثيل كيان يسمى "اللبن"؟
عند القيام بذلك بهذه الطريقة ، سيكون لديك "butter_v_milk" و "buttermilk" - لا لبس.
أيضا ، أود أن أعتقد أن هناك إشارة Foo Fighters في السؤال الأصلي.