5

Ho uno scenario in cui è necessario assegnare alcuni elementi a un guest.Progettazione del database per archiviare e valutare l'espressione delle regole

GuestTable has columns like 
1. Guest ID 
2. GuestType 
3. Age 
4. Height 
5. Gender 

ItemTable has columns like 
1. ItemID 
2. Item Name 

Ogni oggetto è in vendita a clientela in base alla disponibilità di voce così come gli attributi di ospite cioè Gruppo d'età o la gamma Altezza ecc

ad es. Un articolo è disponibile ogni lunedì e martedì dalle 14:00 alle 18:00 per gli ospiti di Male Spa e gli ospiti dell'hotel con altezza superiore a 5 "e inferiore a 5'5".

Poiché il numero di condizioni del filtro è ampio e configurabile dall'utente finale. Così come il sistema dovrebbe essere abbastanza scalabile per soddisfare i nuovi criteri di filtro, come dovrei gestire queste regole. Va bene memorizzare queste regole come espressione nelle tabelle del database? Come modellare le tabelle del database per questo scenario?

O

Dovrei considerare l'utilizzo di un certo motore di regole per questo?

+1

Sembra che si stia creando il proprio generatore di espressioni, quindi è necessario presentare all'utente tutte le colonne possibili e un elenco di operatori (+, -, <, ecc.). Ho il sospetto che dovrai convertirlo in una condizione WHERE valida, memorizzarla come testo e utilizzare l'SQL dinamico per generare la query finale. In alternativa, è possibile creare un report SSRS con molti parametri per visualizzare un report di articoli validi. Solo un commento perché spero che qualcuno abbia un suggerimento migliore. –

+1

Senza una progettazione per come applicherete le regole, come vi aspettereste di ottenere una risposta su come memorizzare le regole. È una regola specifica per un articolo? Davvero hai un oggetto che non venderesti ad un ospite superiore a 5'5? Che ne dici di inventario? Non puoi vendere oggetti che non hai in magazzino. Manca così tanto. – Paparazzi

+0

@ Blam - scarpe con i tacchi impilati? – APC

risposta

1

Come scrive APC nel commento, decidere se utilizzare un motore di regole aziendali non è qualcosa che dovresti affidarti a un gruppo di estranei su Internet.

Tuttavia ... lo scenario è relativamente semplice e limitato. Sembra essere un singolo passo, piuttosto che un flusso di lavoro: "se il cliente soddisfa i criteri x, offri prodotto y", piuttosto che "tutti i clienti che soddisfano i criteri x devono essere approvati da un manager". Sembra essere limitato al solo database - nessun servizio web che invoca per decidere se un prodotto è adatto.

Su questa base - no, non andare per un motore di regole. Sono macchine grandi e complicate che si ripagano solo in problemi molto più grandi di quelli che descrivi.

Suggerirei di utilizzare una libreria .Net "query by example" per consentire agli utenti di creare le condizioni del filtro; ci sono diverse opzioni commerciali, come ad esempio EasyQuery.

+0

Grazie, "query per esempio" puoi nominarne alcuni? –

+0

Ne ho trovato solo uno: ce n'era uno di Telerik e anche Crystal aveva qualcosa, ma non riesce a trovare i link ... –

1

Si dovrebbe pensare di utilizzare qualcosa come Flee ed evitare di utilizzare il database come motore di regole. L'analisi del lato client sarà molto più veloce e non sovraccaricherà il server del database. Basta leggere i valori e quindi analizzare l'espressione utilizzando Flee. È un ottimo motore di valutazione. Prova e facci sapere cosa ne pensi.

Problemi correlati