Я працюю над проектом, де я намагаюся вирішити між використанням стандартної реляційної бази даних SQL або об'єктами JSON для зберігання даних про подію чи діяльність.
Проект буде зберігати дані про кілька типів подій, тому я вирішив просто описати один тип події для цього питання.
Подія в прямому ефірі (описана повністю за допомогою схеми JSON в нижній частині цього питання) - це об'єкт, який зберігає такі дані, як місце проведення події, час / дата події та вартість події. Об'єкт події в прямому ефірі має як "один на один" (подія -> ім'я, подія -> опис), так і один на багато (подія -> місця, подія -> дати, подія -> типи квитків ) відносини. Крім того, об'єкт події може містити один або більше ідентифікаторів виконавця, які посилаються на об'єкт виконавця. Об'єкт виконавця зберігає дані про музикантів, які виступають на заході живої музики.
Користувачі запитують дані, використовуючи як прості ("Знайди мені події з" x "ім'ям)), так і складні (" Знайди мені події з музичним жанром "x" та "y" вартістю в радіусі "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"
}
}
}