Database
 sql >> Database >  >> RDS >> Database

Un modello di dati per la cura degli animali domestici

La cura degli animali domestici è un settore enorme. Esiste un modello di dati che può aiutare i proprietari di animali e i professionisti a gestire le loro attività? Adesso c'è!

Molte persone condividono la propria vita con gatti, cani, uccelli e altri animali. (Una volta ho avuto un piccione per un po', fino a quando la sua ala non si è riparata.) Quello che molti proprietari di animali non si rendono conto è quanto sia grande un'attività di cura degli animali domestici. Negli Stati Uniti, i proprietari di animali domestici hanno speso $ 66,75 miliardi – ed era solo nel 2016!

Mentre la maggior parte di noi può mantenere in vita i nostri criceti senza utilizzare una tecnologia sofisticata, ci sono molte attività che si concentrano sulla cura degli animali domestici:canili (anche noti come hotel per animali o resort per animali domestici), toelettatori, pet sitter (che stanno a casa tua, con il tuo pet, mentre vai in vacanza), dog sitter, pet behaviorists, anche pet massaggiatori e terapisti. Questi spesso forniscono servizi abbastanza complessi agli animali domestici e ai loro proprietari e avrebbero bisogno di un modello di dati per mantenerli organizzati. Quindi diamo un'occhiata a uno.

Cosa c'entra in un modello di dati per la cura degli animali domestici?

Prima di iniziare a descrivere i dettagli del modello, discutiamo di alcuni requisiti:

  1. Chi avrà bisogno di questo modello di dati?

    Sebbene questo modello di dati possa sembrare esotico, non è poi così insolito. Immagina di gestire una delle attività sopra menzionate. Non importa quanto siano diversi questi modelli di business, dovresti comunque:

    • Comunicare con potenziali clienti
    • Spiega i tuoi servizi e indicane i prezzi
    • Organizza il tuo programma
    • Traccia le attività e le attività in corso
    • Addebitare i clienti per i servizi resi

    Quindi sì, c'è la possibilità che tu abbia bisogno di questo modello per te o per i tuoi clienti.

    Ora possiamo andare avanti e rispondere ad alcune domande tecniche.

  2. Cosa dovrebbe essere coperto in questo modello?

    Sarà abbastanza generale da coprire molte situazioni diverse. Partendo dal presupposto che avremo un luogo fisico dove forniremo servizi (come un hotel per animali domestici) o che fungerà da punto di partenza per fornire servizi (ad esempio per un dog sitter).

    Avremo anche bisogno di archiviare i record per i singoli animali domestici e i loro proprietari, nonché i record dei servizi che forniamo. Riferire tutto ciò dovrebbe coprire la maggior parte dei casi di cura degli animali domestici.

  3. Perché questo modello è importante?

    Per spiegarti, lascia che ti parli di una “profezia” che penso si avvererà.

    Siamo tutti consapevoli di come la tecnologia stia cambiando il business. Vediamo articoli sui lavori che l'automazione assumerà nei prossimi 10 o 20 anni. La maggior parte di questi lavori saranno probabilmente quelli che non dipendono dal contatto con gli esseri umani. Ad esempio, molti negozi ora hanno corsie di check-out automatico in cui un dipendente umano può monitorare 5 o 10 casse. Prima, ognuna di queste casse avrebbe avuto un cassiere. Ma aspettare in fila per pagare la spesa probabilmente non è il momento migliore della tua giornata. E anche quel lavoro è molto faticoso e sottopagato, quindi i cassieri non sono davvero entusiasti di vederti. Questi tipi di lavori possono e vengono automatizzati.

    L'altra serie di lavori che verranno automatizzati sono intellettualmente più impegnativi ma alquanto ripetitivi, ad es. quasi tutti i servizi finanziari, la maggior parte dei programmi di computer e persino la scrittura.

    Quindi, la mia "profezia" è che i lavori che richiedono molti contatti umani (o, in questo caso, animali domestici) non solo sopravviveranno, ma diventeranno "lavori del futuro"; stiamo parlando di psicologi, parrucchieri, toelettatori di cani e pet sitter, ecc. Ma avranno bisogno di un po' di tecnologia per gestire le loro attività. Ed è qui che entra in gioco questo modello.

Il modello dei dati




Questo modello di dati è composto da quattro aree tematiche:

  • Pets
  • Facilities & services
  • Cases
  • Planned & provided

Inizieremo con il Pets zona perché gli animali domestici sono ovviamente la parte più importante di questo modello di business. Successivamente, continueremo nello stesso ordine in cui sono elencate le aree tematiche.

Sezione 1:Animali domestici

Inizierò con i Pets argomento; dopotutto, questo modello è qui per via dei nostri piccoli amici vestiti con le loro pellicce e piume. Lo terrò semplice, anche se questa area tematica potrebbe essere ampliata. Ad esempio, potremmo memorizzare molti più dettagli che descrivono gli animali domestici, le loro caratteristiche e i proprietari degli animali domestici (e le loro caratteristiche 😊).

La tabella più importante dell'intero modello è il pet tavolo. Per ogni animale conserveremo:

  • name – Il nome che il proprietario ha dato al proprio animale domestico.
  • species_id – Fa riferimento alla species dizionario e denota la specie da compagnia.
  • birth_date – La data di nascita dell'animale, se disponibile.
  • notes – Tutte le note aggiuntive relative a questo animale domestico, in formato testo libero.

Nel owner tabella, memorizzeremo un elenco di tutti i nostri clienti passati, attuali e potenziali. Personalmente, non mi piace la parola "proprietario", perché dopo aver vissuto con i tuoi animali domestici sono più come membri della famiglia. Ma posso usarlo nel modello dati. Quindi, per ogni proprietario, memorizzeremo il suo first_name e last_name , i dettagli di contatto (come li conosciamo, potremmo non conoscerli tutti) ed eventuali dettagli aggiuntivi nelle notes attributo.

Metteremo in relazione i proprietari e gli animali domestici utilizzando il pet_owner tavolo. Un proprietario potrebbe avere molti animali domestici e un animale domestico potrebbe avere un paio di proprietari, quindi dovremo inserire qui una relazione molti-a-molti. Per ogni record, memorizzeremo un pet_id UNICO – owner_id coppia.

La terza e ultima tabella in questa area tematica è la species dizionario. Oltre all'attributo della chiave primaria id , contiene solo il species_name UNIQUE valore. Useremo questo dizionario per memorizzare le informazioni sulle specie al livello richiesto dall'azienda. Potremmo andare con una serie di valori semplici come "gatto", "cane", "cavallo" e "uccello". Oppure potremmo usare valori più descrittivi come “gatto – Maine Coon”, “gatto – Munchkin”, ecc. Potremmo impiegare una struttura più complessa – cioè avere una tabella per le specie e un'altra per le razze – ma non credo che questo approccio porterà qualcosa di nuovo al modello.

Sezione 2:Strutture e servizi

La seconda cosa più importante in questo modello sono i servizi che forniremo. Avremo bisogno anche di strutture, indipendentemente da ciò che offriamo ai proprietari di animali domestici. Questo potrebbe essere un posto, come un hotel per animali domestici, oppure potrebbe essere un luogo in cui raccogliamo o lasciamo animali domestici (come userebbe un dog sitter). Conserveremo queste informazioni in Facilities & services area tematica.

Inizierò con il service tavolo. Questo è un dizionario che useremo per memorizzare un elenco di tutti i servizi che offriamo ai nostri clienti. Per ogni servizio avremo bisogno di:

  • service_name – Un nome che definisce UNICAMENTE un servizio.
  • has_limit – Un valore che indica se questo servizio ha un limite (ad es. il numero di "letti" nell'hotel per animali).
  • unit_id – L'unità che useremo per misurare quel servizio. Dipende dal tipo di servizio che forniamo e se richiede tempo o materiale (o entrambi). Nella maggior parte dei casi, ci preoccuperemo del tempo. Ad esempio, se un cane soggiorna in un hotel per animali, l'unità utilizzata dovrebbe essere un "giorno". D'altra parte, se stiamo portando a spasso un cane, l'unità dovrebbe essere un'"ora" o un "minuto". Oltre alle unità di tempo, potremmo utilizzare anche altre misure, ad es. se vogliamo definire il numero di bocconcini che il cane “fornirà”.
  • cost_per_unit – Il costo corrente per unità per quel servizio.

L'unit dizionario viene utilizzato per memorizzare l'elenco di UNIQUE unit_name valori. I valori di questo dizionario sono referenziati solo nel service tabella, ma sono molto importanti nella fase di progettazione e quando addebitiamo ai clienti i servizi forniti.

Per ogni servizio, dovremo anche definire ogni specie accettata. Ad esempio, forse forniremo il servizio di pet hotel solo per i gatti e non per i cani. Questo può essere il caso indipendentemente dal fatto che offriamo passeggiate e toelettatura del cane. Conserveremo tutti gli UNIQUE service_idspeices_id coppie nel available_for tabella.

Dopo aver descritto tutti i nostri servizi e i loro dettagli, ora descriveremo le strutture (luoghi) in cui forniremo questi servizi.

Ci sono buone probabilità che opereremo più di una struttura e forniremo più di un servizio. Per questo motivo, dovremo archiviare tutte le nostre strutture e i relativi dettagli. Utilizzeremo la facility tabella per tenere traccia di:

  • facility_name – Un nome che useremo internamente per denotare UNICAMENTE quella struttura.
  • address , phone , email e contact_person – Posizione e informazioni di contatto, che sono praticamente autoesplicative.

Per ogni struttura, memorizzeremo i servizi che fornisce. Potremmo avere una struttura solo per gatti e un'altra solo per cani. Oppure potremmo avere un veterinario in una struttura e non nell'altra. In ogni caso, dovremo archiviare tutti i servizi che siamo in grado di fornire in ciascuna struttura. Nel provides tabella, memorizzeremo un facility_id UNICO - service_id paio. Nel caso in cui quel service .has_limit per il servizio di riferimento è vero, dovremo anche definire il service_limit per quella struttura anche il currently_used quantità. Tale valore dovrebbe essere ricalcolato ogni volta che iniziamo a fornire quel servizio per un altro animale domestico in quella struttura (ad es. viene preso un posto in più nell'hotel per animali domestici) o smettiamo di fornirlo a un animale domestico (ad es. il numero di cucce disponibili nell'hotel è aumentato di uno).

Sezione 3:Casi

I Cases l'area tematica è dove descriveremo e memorizzeremo tutti i dati relativi a visite o sessioni (ad es. una visita è un soggiorno presso il nostro hotel per cani, una toelettatura, una passeggiata, ecc.)

Il case table memorizza animali domestici e strutture relative a sessioni, chiamate o visite. Ho deciso di usare "case" come nome del tavolo perché potremmo non memorizzare solo le visite qui. Forse vogliamo memorizzare chiamate o altri contatti. Per ogni caso, memorizzeremo:

  • facility_id – L'ID della relativa struttura. Potrebbe essere il luogo in cui ha soggiornato l'animale (in un hotel) o la struttura che ha ricevuto una chiamata relativa a questo caso.
  • pet_id – L'ID dell'animale coinvolto.
  • start_time – Il timestamp effettivo di inizio del caso.
  • end_time – Il timestamp effettivo alla fine del caso. Sarà NULL fino alla chiusura del caso.
  • notes – Eventuali note aggiuntive, in formato testuale, relative a quel caso.
  • closed – Se questo caso è chiuso o meno. Verrà impostato su "True" quando end_time è impostato.

Utilizzeremo la combinazione di facility_idpet_idstart_time come chiave UNICA di questa tabella.

Ad ogni caso verranno assegnati uno o più stati. Possiamo aspettarci che il primo stato assegnato indichi quando il caso è iniziato. Successivamente, assegneremo nuovi stati secondo necessità, fino a quando il caso non sarà risolto (chiuso).

Il primo dizionario qui è status_category dizionario. Contiene un elenco di UNIQUE status_category_name valori. Questi sono lo stato del gruppo per tipo, ad es. "stato fisico", "appetito" o "stato generale".

Tutti i possibili stati sono memorizzati nello status dizionario. Per ogni stato, memorizzeremo il suo status_name , l'ID della categoria di stato a cui appartiene e is_closing_status valore. Se il is_closing_status il valore è "True", significa che quando assegniamo questo stato, il caso verrà contrassegnato come chiuso. Il status_namestatus_category_id coppia costituisce la chiave UNICA di questa tabella.

Nel case_status tabella, memorizzeremo tutti gli stati effettivamente assegnati ai casi. Per ogni record in questa tabella, memorizzeremo i riferimenti al case e lo status tabelle, eventuali notes aggiuntive e il insert_time di quello stato. Potremmo, ad esempio, memorizzare le condizioni fisiche e l'appetito attuali di un animale domestico come stati quando l'animale entra nella nostra struttura. Questi stati verrebbero modificati se notiamo un cambiamento nelle loro condizioni. D'altra parte, memorizzeremo anche gli stati relativi a ciascun caso (ad es. "Il cane è stato portato a spasso"); inseriremo tutti i dettagli aggiuntivi relativi a tale stato nelle notes attributo. Questi stati non saranno stati di "chiusura" perché sono correlati a) allo stato attuale dell'animale in quel momento, oppure b) alle azioni intraprese durante la sessione o la visita. Un esempio di stato di "chiusura" potrebbe essere "cane in pensione" del nostro hotel per animali domestici.

L'ultima tabella in questa sezione è la note tavolo. Utilizzeremo questa tabella per memorizzare tutte le note relative ai casi quando non è necessario inserire un nuovo stato. Per ogni record, memorizzeremo il note_text , un ID del caso correlato e insert_time quando è stata creata quella nota.

Sezione 4:pianificato e fornito

L'area tematica finale è il Planned & provided argomento. Le tre tabelle in questa area tematica memorizzano i dati sui servizi che abbiamo pianificato di fornire, quelli effettivamente forniti e tutte le fatture relative ai casi.

Il service_planned la tabella contiene un elenco di tutti i servizi che abbiamo proposto ai nostri clienti o che hanno prenotato. Ogni record conterrà:

  • case_id – L'ID del caso correlato.
  • service_id – L'ID del relativo servizio.
  • planned_start_time &planned_end_time – Quando prevediamo di iniziare e terminare questo servizio. L'ora di inizio deve essere definita ma l'ora di fine può essere NULL.
  • planned_units – Il numero di unità di servizio pianificate, ad es. 3 giorni in un pet hotel.
  • cost_per_unit – Il costo per unità in quel momento. È importante memorizzare questo valore perché è il valore memorizzato in service .cost_per_unit potrebbe cambiare tra il momento in cui viene effettuata la prenotazione e quello in cui viene eseguita.
  • planned_price – Il prezzo indicato per quel servizio. Dovrebbe essere uguale a planned_units * cost_per_unit .
  • notes – Eventuali note aggiuntive relative al servizio pianificato.

Il service_provided table ha quasi la stessa struttura di service_planned tavolo. L'unica differenza è che le units e price_charged gli attributi potrebbero contenere valori NULL. Ciò è dovuto al fatto che possiamo inserire un record in questa tabella quando iniziamo a fornire il servizio (es. quando l'animale entra nell'hotel per animali) e lo aggiorneremo quando smettiamo di fornire il servizio (es. quando il proprietario prende il animali domestici).

L'ultima tabella nel nostro modello è la invoice tavolo. Mantiene un elenco di tutte le fatture che abbiamo generato per tutti i nostri casi. Per ogni fattura memorizzeremo:

  • invoice_code – Un numero UNICO interno generato per ogni fattura.
  • case_id – L'ID del caso correlato.
  • time_generated – Quando è stata generata la fattura.
  • invoice_amount – L'importo originale che addebitiamo al cliente. Questo importo dovrebbe essere uguale alla somma di tutti i valori in price_charged per service_provided .
  • discount – Uno sconto concesso al cliente (ad es. a causa di un coupon, carta fedeltà, ecc. Il motivo non ha molta importanza.)
  • time_charged – Quando al cliente è stata effettivamente addebitata tale fattura. Questo attributo conterrà un valore NULL fino al pagamento.
  • amount_charged – L'importo effettivo addebitato al cliente per tale fattura.
  • notes – Eventuali note aggiuntive relative a tale fattura.

Cosa aggiungeresti?

Oggi abbiamo parlato di un possibile modello di dati per un'attività di pet care. Questo modello copre le funzionalità di base, ma c'è spazio per miglioramenti. Condividi i tuoi suggerimenti con noi nella sezione commenti. Grazie!