سؤال

لدي جدولين في قاعدة البيانات الخاصة بي:

  • جدول الشركة (المعرف، اسم الشركة، اسم مستخدم الشركة، كلمة مرور الشركة)
  • جدول الموظفين (المعرف، معرف الشركة، الاسم، اسم المستخدم، كلمة المرور)

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

يحتوي جدول البريد الداخلي الخاص بي على هذه الحقول:

  • بطاقة تعريف
  • من معرف
  • معرف
  • رسالة
  • ...

تحدث مشكلتي الآن، عندما أقوم بملء جدول الرسائل بالمعرفات (من/إلى) ليس لدي أدنى فكرة عما إذا كانت الرسالة من الشركة أو الموظف حيث قد يكون المعرف موجودًا في كلا الجدولين.

ماذا يمكن أن يكون الحل الخاص بي؟

تحديث

المثال أعلاه كان لتبسيط سؤالي.

لا يحتوي جدولا الموظفين والشركة على اسم المستخدم أو كلمة المرور، بل يحتويان على إشارة إلى عضوية ASP.NET uniqueidentifier لإدارة تسجيلات الدخول.كما هو مقترح أدناه عند استخدام واجهة المستخدم للتحكم في المرسل والمتلقي، أستخدم واجهة المستخدم من وحدة تحكم عضوية ASP.NET.شكرًا.:-)

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

المحلول

استخدم معرفًا فريدًا للمعرف في جداول الشركة والموظف واستخدم newid() كقيمة افتراضية.

وبدلاً من ذلك، قم بدمج الجداول وإضافة حقل لإظهار ما إذا كان السجل شركة أم موظفًا.

نصائح أخرى

يمكنك استخدام مفتاحين خارجيين، أحدهما للشركة والآخر للموظف والتأكد من تعيين واحد فقط على الإطلاق.

إذن، يمكن أن يشير عنوان البريد الإلكتروني ToID إلى معرف الموظف أو معرف الشركة، هل هذا صحيح؟لا يمكنك تقييد هذا البريد الإلكتروني بشكل صريح. يجب أن يكون ToID موجودًا في واحد على الأقل من (employee.ID أو Company.ID).حلول قليلة:

  1. لديك معرفات في جدول البريد الإلكتروني (ToEmployeeId، ToCompanyId)، وقيد تحقق يقيد إمكانية تحديد واحد فقط في بريد إلكتروني معين.
  2. ضع معرفات الموظفين والشركة في نفس مساحة المعرف، على سبيل المثال.يتم إتقان المعرف الخاص بهم في أحد أنواع جداول جهات الاتصال، ثم يحتوي كل من معرف الشركة والموظف على FK يشير إلى معرف جهة الاتصال.لا أعتقد أن هذا الحل جيد جدًا نظرًا لأن جهة الاتصال هي نوع ممتاز ضعيف جدًا من هذه الجداول الأخرى.
  3. احصل على جدول جهة اتصال مثل (ContactId وEmployeeId وCompanyId).عندما يتم تشغيل بريد ما يصل إلى معرف الموظف = X، فإنك تبحث عن صف جهة اتصال باستخدام معرف الموظف = X.إذا لم يكن أحدها موجودًا، فيمكنك إنشاؤه واستخدام معرف جهة الاتصال الجديد.الشيء نفسه ينطبق على Companyid.يتيح لك هذا التوسع لاستخدام مجموعات معرفات أخرى في المستقبل أيضًا
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top