سؤال

هناك 2 مليون مستخدم لكل مستخدم لديه 4 جداول. لن يتم إلحاق البيانات في 4 جداول وستظل إصلاحًا.

بنية كل جداول المستخدمين ستكون نفسها.

لتخزين بيانات هؤلاء المستخدمين في MySQL ، يجب علي تصميم قاعدة بيانات.

هل أحتاج إلى إنشاء 2 مليون قاعدة بيانات لكل منها 4 جداول؟

أي مساعدة موضع تقدير

الجداول الأربعة هي

  1. سجلات المكالمات الواردة للمستخدم لمدة شهر واحد
  2. تحفيز سجلات الرسائل القصيرة للمستخدم لمدة شهر واحد
  3. سجلات المكالمات الصادرة للمستخدم لمدة شهر واحد
  4. سجلات الرسائل القصيرة الصادرة للمستخدم لمدة شهر واحد

سيكون لجداول المكالمات الهيكل التالي

رسوم مدة رقم التاريخ

سيكون للرسائل القصيرة الواردة الهيكل التالي

رقم وقت التاريخ

سيكون للرسائل القصيرة المنتهية ولايتها الهيكل التالي

رسوم رقم وقت التاريخ

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

المحلول

هذا مضاد SQL الذي أسميه تصفيح القبائل. تبدو لطيفة وودية ، لكن سرعان ما تتكاثروا عن السيطرة.

بمجرد أن تسمع عبارات تبدأ "لدي جدول متطابق لكل ..." أو "لدي عمود متطابق لكل ..." ، ثم ربما يكون لديك قبيلة بيانات التعريف.

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

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

نصائح أخرى

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

لا ، لا تحتاج إلى 2 مليون قاعدة بيانات مع 4 جداول لكل منهما. تحتاج فقط إلى قاعدة بيانات واحدة و 4 جداول ومعرف المستخدم الفريد لكل مستخدم.

شيء مثل:

users table:
| user_id (primary key) | username |

address table
| user_id (foreign key) | address  |

whatever table
| user_id (foreign key) | whatever |

يجب أن أتساءل لماذا تحتاج 4 جداول لكل مستخدم؟ نأمل أن تفهم أساسيات ما أحاول نقله هنا.

ضع في اعتبارك هذا المثال - مستعار من مستودع البيانات - إنه نجم Kimball عادي. نموذج مبسط للغاية ، ولكن هذه الجداول الأربعة تغطي احتياجاتك الموصوفة ، وأكثر من ذلك.

telecom_model_01

تحتاج فقط إلى جدول للمستخدمين ، Table1 ، Table2 ، Table3 ، Table4. ثم عندما تحتاج إلى إدخال البيانات إلى Table1 ، فقط قم بتضمين user_id إلى Table1

TABLE 1                              USERS

ID   usersID     amount   quantity   ID   Name
1       1           200      2        1   John
2       1           400      3      

يمكنك الاتصال ثم استخدام Join Inner بواسطة Table1.usersId = مستخدمي.

أتمنى أن تحصل على هذه النقطة

لا ، أنت لا تحتاج إلى 2 مليون قاعدة بيانات!

أنت في الواقع تحتاج إلى 2 مليون حالة ل 4 طاولات.

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

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