سؤال

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

لقد وجدت بعض الإجابات لمواقع التسوق حيث لا يتم تحديد الحقول: يجب استخدام بنية قاعدة بيانات رأسية. لكنني مرتبك بشأن ما يجب استخدامه لموقع شجرة العائلة. يجب أن أستخدم رأسية أو أفقية؟

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

المحلول

أفترض أنك تستخدم قاعدة بيانات علنية مثل MySQL أو MS SQL أو SQLITE أو POADGRESQL أو Oracle للتخزين؟

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

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

يصبح قصة مختلفة عندما يمكن للمستخدمين تحديد خصائص جديدة في ملفات التعريف الخاصة بهم مثل العيون Colo (U) R أو COLO المفضل (U) R أنفسهم. ما مدى مرونة تريد أن تكون هذه الملفات الشخصية؟

نصائح أخرى

قواعد البيانات الرأسي رائعة للمحوطات والقراءة / الإبلاغ فقط. عادة يمكنك إعادة توليدها بين عشية وضحاها. عادة ما يكون أداء الكتابة سيئا للغاية ولكنه يختار 10-100 مرة أسرع.

سيناريو نموذجي لاستخدام قاعدة بيانات رأسية هو التقارير OLAP عند إنشاء لقطة بيانات (يوميا) من البيانات ثم قم بتشغيل الاستعلامات مقابلها. يأتي معظم الاستحقاقات من الاستعلامات التي تطلب فقط عددا صغيرا نسبيا من الحقول، على سبيل المثال، عند تحديد حفنة فقط من الحقول من جدول واسعة وكبير. سيستغرق مثل هذا الاستعلام الاستعلام ضد ملايين السجلات (على سبيل المثال حساب SUM / COUNT / AVG) فقط ثانية أو شهرين.

لا يبدو أن قضيتك مرشحا جيدا لقاعدة بيانات رأسية.

وأنا أتفق مع Tuinstoel، نظام الطاولة الرأسي / إكس ليس بطيئا فقط ولكن أيضا بعض الوقت معقدة للغاية. في بعض الأحيان يكون من الضروري كتابة بعض أساليب API الخاصة بك التي تتعامل مع تلك الجداول والمطورين تعامل فقط مع تلك الطرق لتجنب التعقيد.

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

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

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