ما هي أفضل طريقة لتمثيل علاقة عديدة لكثير في قاعدة البيانات؟

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

سؤال

وإذا كان لدي عدد المستخدمين وعدد الصفحات، ويمكن لكل مستخدم تول أي عدد من الصفحات، وكل صفحة يمكن يديره أي عدد من الإداريين وكيف يمكن أن تخزين كافة هذه الأذونات في قاعدة البيانات؟

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

وبوسعي أن أعطي كل مستخدم الجدول الخاص بهم، مع مفتاح => نوع قيمة التخطيط، حيث كنت قد المستخدم => someuser، اسم => بعض الرجل، أذونات => أيا كان، PAGE_ID => 4، PAGE_ID = > 8، PAGE_ID => 12، الخ. ولكن الذي يبدو فوضوي ويتطلب أذونات إضافية للمستخدم الخلية.

وعلى افتراض أن عدد الصفحات تكون صغيرة نسبيا (سيكون)، وأنا قد وضعت نوع "الأعلام" من الحقل في الجدول المستخدمين، وINT 32 بت (لن يكون هناك أكثر من 32 'صفحات' في هذا التنفيذ). ولكن من شأنه أن يسمح فقط لتشغيل / إيقاف نوع من الامتياز.

ولقد نظر أيضا وجود جدول المستخدم، ومن ثم كل نقطة دخول المستخدم إلى جدول أذونات لهذا المستخدم، الأمر الذي سيكون له على التوالي لكل صفحة مع الأذونات المناسبة لهذا المستخدم - هذا هو أنظف من الآخر " الجدول لكل مستخدم "حل I المدرجة ولكن مرة أخرى تحتاج أيضا امتيازات إضافية لحساب الخلية.

وأي أفكار أخرى؟ ما هي، في تجربتك، يختتم كونها الحل الأكثر خالية من الألم إلى هذا؟

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

المحلول

وكثير <-> على غرار العديد من العلاقات عادة مع جدول متوسطة. في حالتك سيكون لديك هذه الجداول:

User        UserPage       Page
------      -----------    -------
UserID      UserID         PageID
...         PageID         ...

والجدول المتوسطة (UserPage هنا) هو المكان الذي تخزن معلومات هذا الخصوص إلى أن مجموعة من البائع (الأذونات الخاصة بك، في هذه الحالة).

نصائح أخرى

والطريق الكنسي هو أن يكون هناك جدول متوسطة مع حقلين فقط: المفتاح الأساسي من كل من الجداول اتصال

.

ما عليك هو جدول رسم الخرائط.

وUSER ----- ----- صفحات

والمفتاح الأساسي للجدول الجديد هو مفتاح مركب يتكون من USER_ID وPAGE_ID

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

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