Estoy trabajando en un proyecto en el que intento decidir entre usar una base de datos relacional SQL estándar o objetos JSON para almacenar datos sobre un evento o actividad.
El proyecto almacenará datos sobre múltiples tipos de eventos, por lo que he decidido describir solo un tipo de evento para esta pregunta.
El evento de música en vivo (descrito en su totalidad usando el esquema JSON al final de esta pregunta) es un objeto que almacena datos como dónde se llevará a cabo el evento, la hora / fecha del evento y el costo del evento. El objeto de evento de música en vivo tiene tanto uno a uno (evento -> nombre, evento -> descripción) como uno a muchos (evento -> lugares, evento -> fechas, evento -> tipos de entradas ) relaciones. Además, el objeto de evento puede contener uno o más ID de intérprete, que enlazan con el objeto de intérprete. El objeto intérprete almacena datos sobre músicos que se presentan en el evento de música en vivo.
Los usuarios consultarán los datos utilizando tanto simples ("Encuéntrame eventos con el nombre 'x'") como complejos ("Encuéntrame eventos con el género musical 'x' y el costo 'y' dentro de un radio de 'z' de mi actual ubicación ") consultas. Los datos serán enviados por los usuarios mediante un formulario web.
Como probablemente pueda deducir del esquema JSON definido, originalmente iba a usar objetos JSON para almacenar estos datos, pero he escuchado de algunas personas que dicen que debido a que mis datos son puramente relacionales, debería seguir los métodos más antiguos.
Agradecería cualquier idea sobre los pros y los contras de cada enfoque dadas mis necesidades. Si necesita algo aclarado, no dude en preguntar.
{
"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"
}
}
}