Plausiprüfung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Plausiprüfung

    Hallo,

    ich habe mal wieder eine interressante Aufgabe ...

    Es geht um die Plausibilitätsprüfung von mehreren Formularen. Da dort immer wieder die selbe Art der Prüfung auftritt,
    und die Regeln der Prüfung auch ab und zu mal erweitert werden, würde ich die Regeln gerne in die Datenbank verfrachten.
    In der aktuellen Programmierung sind alle Prüfungen fest im Code verdrahtet, welches eine Regeländerung recht aufwendig
    macht.
    Ziel ist es alle möglichen Abhängigkeiten zwischen den Feldern des Formulars zu prüfen.
    zB steht im Feld A ein "AL", darf in Feld B nur "OK" oder "ZF" stehen.
    oder der schlimmere Fall ( wo ich noch nicht so richtig eine Idee habe )
    steht im Feld A ein "AL" und im Feld B ein "FF" oder im Feld C ein "AA" muß in Feld D eine "1" stehen.

    mein aktueller Ansatz beruht auf 2 Tabellen, welche alle Regeln enthalten,
    die Abfragen dazu würden aber rekursiv arbeiten, also die Datenbank sehr stark belasten.

    Jemand eine Idee, wie man so etwas effizient in der Datenbank ablegt,
    Und dann auch noch effizient prüfen kann?
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

  • #2
    Ich habe mir mal darüber Gedanken gemacht. Dabei bin ich zum Schluss gekommen, dass man das ganze als XML-Format speichern könnte. Somit wäre letzendlich alles möglich:

    PHP-Code:
    <rules>
        <
    rule id="1">
            <
    condition type="and">
                <
    field name="a">
                    <
    value>AL</value>
                </
    field>
            </
    condition>
            
            <
    result>
                <
    field name="b">
                    <
    value>ok</value>
                    <
    value>zf</value>
                </
    field>
            </
    result>
        </
    rule>
        
        <
    rule id="2">
            <
    condition type="or">
                <
    condition type="and">
                    <
    field name="a">
                        <
    value>AL</value>
                    </
    field>
                
                    <
    field name="b">
                        <
    value>BB</value>
                    </
    field>
                </
    condition>
                
                <
    field name="c">
                        <
    value>AA</value>
                </
    field>
            </
    condition>

            <
    result>
                <
    field name="d">
                    <
    value>1</value>
                </
    field>
            </
    result>
        </
    rule>
    </
    rules
    Wenn man das jetzt versucht aufzuschlüsseln in Entitäten und somit in ein relationales Datenbanksystem, könnte man auf folgende Lösung kommen.
    Code:
    Rule
    - id
    - condition_id
    - result_id
    
    Condition
    - id
    - rule_id
    - parent_id
    - type
    
    Field
    - id
    - name
    - values (z.B. ein Array serialisiert, um noch eine weitere Instanz zu benötigen)
    
    Result (ist nicht unbedingt nötig, wenn man es gleich in rule einbaut)
    - id
    
    Result_has_field
    - result_id
    - field_id
    
    Condition_has_field
    - condition_id
    - field_id
    Sieht recht komplex aus, aber ich hoffe, dass es etwas hilft.

    Kommentar

    Lädt...
    X