Я работаю над проектом, в котором я пытаюсь решить, использовать ли стандартную реляционную базу данных SQL или объекты JSON для хранения данных о событии или деятельности.
Проект будет хранить данные о нескольких типах событий, поэтому я решил просто описать один тип событий для этого вопроса.
Событие с живой музыкой (полностью описанное с использованием схемы JSON внизу этого вопроса) - это объект, в котором хранятся такие данные, как место, где будет происходить событие, время / дата события и стоимость события. Объект события живой музыки имеет как один-к-одному (событие -> имя, событие -> описание), так и один-ко-многим (событие -> места проведения, событие -> даты, событие -> типы билетов ) отношения. Кроме того, объект события может содержать один или несколько идентификаторов исполнителя, которые ссылаются на объект исполнителя. Объект исполнителя хранит данные о музыкантах, которые выступают на концерте живой музыки.
Данные будут запрашиваться пользователями, использующими как простые («Найти меня события с« x »имя»), так и сложные («Найти меня события с музыкальным жанром« x »и стоимостью у» в радиусе «z» от моего текущего местоположение ") запросов. Данные будут предоставлены пользователями с помощью веб-формы.
Как вы, вероятно, можете сказать из определенной схемы JSON, я первоначально собирался использовать объекты JSON для хранения этих данных, но я слышал от некоторых людей, которые говорят, что, поскольку мои данные являются чисто реляционными, я должен придерживаться более старых методов.
Буду признателен за любые мысли о плюсах и минусах каждого подхода с учетом моих потребностей. Если вам нужно что-то разъяснить, пожалуйста, не стесняйтесь спрашивать.
{
"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"
}
}
}