Sto lavorando a un progetto in cui sto cercando di decidere se utilizzare un database relazionale SQL standard o oggetti JSON per archiviare dati su un evento o un'attività.
Il progetto memorizzerà i dati su più tipi di eventi, quindi ho deciso di descrivere un solo tipo di evento per questa domanda.
L'evento di musica dal vivo (descritto per intero utilizzando lo schema JSON in fondo a questa domanda) è un oggetto che memorizza dati come dove si svolgerà l'evento, l'ora / data dell'evento e il costo dell'evento. L'oggetto evento di musica dal vivo ha sia uno-a-uno (evento -> nome, evento -> descrizione) che uno-a-molti (evento -> luoghi, evento -> date, evento -> tipi di biglietti ) relazioni. Inoltre, l'oggetto evento può contenere uno o più ID performer, che si collegano all'oggetto performer. L'oggetto performer memorizza i dati sui musicisti che si esibiscono all'evento di musica dal vivo.
I dati verranno interrogati dagli utenti utilizzando sia semplici ("Trovami eventi con 'x' nome") che complessi ("Trovami eventi con il genere musicale 'x' e il costo di 'y' entro un raggio di 'z' dal mio attuale posizione "). I dati saranno inviati dagli utenti utilizzando un modulo web.
Come probabilmente puoi dire dallo schema JSON definito, inizialmente avrei usato gli oggetti JSON per archiviare questi dati, ma ho sentito da alcune persone che affermano che, poiché i miei dati sono puramente relazionali, dovrei attenermi ai metodi più vecchi.
Gradirei qualsiasi pensiero sui pro e contro di ogni approccio dato i miei bisogni. Se hai bisogno di chiarimenti, non esitare a chiedere.
{
"event": {
"eventID":{
"type":"string"
},
"eventType":{
"type":"array",
"eventTypeItem":{
"type":"string"
}
},
"eventName":{
"type":"string"
},
"eventDescription":{
"type":"string"
},
"eventVenueList":{
"type":"array",
"eventVenueListID":{
"type":"integer"
}
},
"eventURL":{
"type":"string"
},
"eventTwitter":{
"type":"string"
},
"eventFB":{
"type":"string"
},
"eventInstagram":{
"type":"string"
},
"eventEmail":{
"type":"string",
"format":"email"
},
"eventContactPerson":{
"type":"string"
},
"eventDoorTime": {
"type":"string",
"format":"date-time"
},
"eventPerformerIDList":{
"type":"array",
"liveMusicPerformerID":{
"type":"integer"
}
},
"eventSetList":{
"type":"array",
"eventPerformerID":{
"type":"integer"
},
"eventPerformerStartTime":{
"type":"string",
"format":"date-time"
},
"eventPerformerEndTime":{
"type":"string",
"format":"date-time"
}
},
"eventDateList": {
"type":"array",
"eventDateItem": {
"type":"string",
"format":"date-time"
}
},
"eventDateStartTime": {
"type":"string",
"format":"date-time"
},
"eventDateEndTime": {
"type":"string",
"format":"date-time"
},
"eventTicket":{
"type":"array",
"eventTicketType":{
"type":"string"
},
"eventTicketLowPrice":{
"type":"number"
},
"eventTicketHighPrice":{
"type":"number"
},
"eventDatesAdvancePrice": {
"type":"number"
}
}
},
"performer": {
"performerID": {
"type":"integer"
},
"performerType": {
"type":"string"
},
"performerName": {
"type":"string"
},
"performerAlternateName": {
"type":"array",
"performerAlterateNameItem":{
"type":"string"
}
},
"performerGenreList": {
"type":"array",
"performerGenreItem":{
"type":"string"
}
},
"performerURL": {
"type":"string"
}
}
}