كيف يمكنني الحصول على عمود فريد من نوعه في العديد من الجداول

StackOverflow https://stackoverflow.com/questions/2404754

سؤال

لدي عشرة أو أكثر (لا أعرف) الجداول التي تحتوي على عمود يسمى foo مع نفس نوع البيانات.
كيف يمكنني معرفة SQL أن القيم في جميع الجداول يجب أن تكون فريدة من نوعها.
أعني إذا (لدي قيمة "1" في الجدول 1) لا ينبغي أن أكون قادرا على القيمة "1" في الجدول 2

هل كانت مفيدة؟

المحلول

لديك جدول معرف مشترك، والتي مرجع هذه الجداول العشر. سيعمل ذلك بشكل جيد في أنه سيضمن معرف فريد، ولكن لا يعني أنه لا يمكنك تكرار المعرف في الجدول إذا كان شخص ما يريد حقا.

ما أعنيه هو جدول معرف مشترك يضمن عدم وجود تكرارات لإدراج (من خلال إدراج معرف أيضا في هذا الجدول الشائع)، ولكن الشيء هو الطريق لضمان عدم حدوثه أبدا هو بناء قواعد العمل في النظام أو وضع التحقق من القيود على المرجع التبادلي الجداول الأخرى (مما يضمن التفرد، ولكن أداء الأداء).

نصائح أخرى

السؤال هو الصياغة غامضة؛ إذا كنت بحاجة إلى إنشاء عمود فريد من نوعه بين عدة جداول، استخدم GUIDs الصف أو جدول مولد معرف مشترك؛ إذا كنت بحاجة إلى فرض التفرد (والقيم الحقلية موجودة بالفعل)، استخدم المشغلات.

بشكل عام، إذا قمت بإنشاء القيم، فلن تحتاج إلى فرض أي شيء. منطق الجيل، إذا تم القيام به بشكل صحيح، سيعتني بذلك. إذا كنت تدرج، فقل إدخال المستخدم، ثم يمكنك وفرض التفرد أثناء الإدراج. كقاعدة صحيحة أو شيء من هذا.

يمكنك تحديد الحقل كجيد (أو UniqueDideyDifier في SQL Server). ثم سيكون الأمر دائما فريدا مهما.

ماذا عن تعيين قيد الشيك على كل جدول، مثل هذا المعرف٪ 10 = n (حيث n هو رقم الجدول، من 0-9). واستخدام الهوية (ن، 10) في كل مرة.

أود أن أقترح أنه ربما التصميم الخاص بك معيبة. لماذا هذه الجداول المنفصلة؟ يكون Ouwld أفضل لوضعها في طاولة واحدة مع حقل معرف واحد وآخر تم تقديمه لتحديد كل ما يجعل الجداول Spearate (معرف Cusotmer على سبيل المثال). ثم يمكنك أن تقرأ حول جداول الفم إذا كنت تريد تقسيمها من قبل العملاء لأسباب الأداء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top