Sto lavorando a un progetto in cui sto cercando di decidere tra l'utilizzo di 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 solo un tipo di evento per questa domanda.
L'evento di musica dal vivo (descritto per esteso utilizzando lo schema JSON in fondo a questa domanda) è un oggetto che memorizza dati come il luogo in cui si svolgerà l'evento, l'ora / data dell'evento e il costo dell'evento . L'oggetto evento di musica dal vivo ha sia le descrizioni one-to-one (evento - > nome, evento - >) sia le date one-to-many (evento - > eventi, evento - > - > tipi di ticket) relazioni. Inoltre, l'oggetto evento può contenere uno o più ID esecutore, che si collegano all'oggetto esecutore. L'oggetto esecutore memorizza i dati sui musicisti che si esibiscono durante l'evento di musica dal vivo.
I dati verranno interrogati dagli utenti utilizzando sia semplici ("Trova eventi con nome 'x'") sia complessi ("Trova eventi con il genere musicale" x "e il costo" y "nel raggio di" z " dalla mia posizione attuale ") query. I dati verranno inviati dagli utenti utilizzando un modulo web.
Come probabilmente puoi dire dallo schema JSON definito, originariamente avrei usato gli oggetti JSON per archiviare questi dati ma ho sentito da alcune persone che dicono che poiché i miei dati sono puramente relazionali, dovrei attenermi al precedente metodi.
Gradirei qualsiasi pensiero sui pro e contro di ciascun approccio, date le mie esigenze. 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"
}
}
}