تنفيذ '20 أسئلة'-مثل المعالج في قاعدة البيانات

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

  •  09-06-2019
  •  | 
  •  

سؤال

أنا أبحث لتنفيذ تعتمد على البيانات المعالج مع السؤال شجرة المخزنة في قاعدة بيانات Oracle.ما هو أفضل مخطط لاستخدام لجعل قاعدة البيانات جزء مرن (أيمن السهل إضافة مسارات جديدة من الأسئلة) دون التضحية كثيرا من حيث الأداء ؟

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

المحلول

يمكنك بناء هيكل الشجرة باستخدام المفتاح الخارجي يشير نفس الجدول ("خنزير الأذن" العلاقة كما هو المعروف في كثير من الأحيان).ثم يمكنك استخدام الاتصال عن طريق بناء الجملة الاعتراضية الشجرة.هنا مثال بسيط:

SQL> create table qs
  2  ( q_id integer primary key
  3  , parent_q_id integer references qs
  4  , parent_q_answer varchar2(1)
  5  , q_text varchar2(100)
  6* );

Table created.

SQL> insert into qs values (1, null, null, 'Is it bigger than a person?');

1 row created.

SQL> insert into qs values (2, 1, 'Y', 'Does it have a long neck?');

1 row created.

SQL> insert into qs values (3, 2, 'Y', 'It is a giraffe');

1 row created.

SQL> insert into qs values (4, 2, 'N', 'It is an elephant');

1 row created.

SQL> insert into qs values (5, 1, 'N', 'Does it eat cheese?');

1 row created.

SQL> insert into qs values (6, 5, 'Y', 'It is a mouse');

1 row created.

SQL> insert into qs values (7, 5, 'N', 'It is a cat');

1 row created.

SQL> commit;

Commit complete.

SQL> select rpad('    ',level*4,' ')||parent_q_answer||': '||q_text
  2  from qs
  3  start with parent_q_id is null
  4  connect by prior q_id = parent_q_id;

RPAD('',LEVEL*4,'')||PARENT_Q_ANSWER||':'||Q_TEXT
------------------------------------------------------------------------------------------------------------------------------
    : Is it bigger than a person?
        Y: Does it have a long neck?
            Y: It is a giraffe
            N: It is an elephant
        N: Does it eat cheese?
            Y: It is a mouse
            N: It is a cat

7 rows selected.

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

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