Saya sedang mengerjakan proyek di mana saya mencoba untuk memutuskan antara menggunakan database relasional SQL standar atau objek JSON untuk menyimpan data tentang suatu peristiwa atau kegiatan.
Proyek ini akan menyimpan data pada beberapa jenis acara jadi saya telah memutuskan untuk hanya menggambarkan satu jenis acara untuk pertanyaan ini.
Acara musik langsung (dijelaskan secara lengkap menggunakan skema JSON di bagian bawah pertanyaan ini) adalah objek yang menyimpan data seperti di mana acara akan berlangsung, waktu / tanggal acara dan biaya acara. Objek acara musik langsung memiliki satu-ke-satu (acara -> nama, acara -> deskripsi) dan satu-ke-banyak (acara -> tempat, acara -> tanggal, acara -> jenis tiket ) hubungan. Selanjutnya, objek acara dapat berisi satu atau lebih ID pemain, yang menautkan ke objek pemain. Objek pemain menyimpan data musisi yang tampil di acara musik live.
Data akan ditanyakan oleh pengguna yang menggunakan sederhana ("Temukan saya acara dengan nama 'x'") dan kompleks ("Temukan saya acara dengan genre musik 'x' dan biaya 'y' dalam radius 'z' dari saat ini saya kueri lokasi "). Data akan dikirimkan oleh pengguna menggunakan formulir web.
Seperti yang mungkin Anda ketahui dari skema JSON yang ditentukan, saya awalnya akan menggunakan objek JSON untuk menyimpan data ini, tetapi saya telah mendengar dari beberapa orang yang mengatakan bahwa karena data saya murni relasional, saya harus tetap menggunakan metode yang lebih lama.
Saya akan menghargai setiap pemikiran tentang pro dan kontra dari setiap pendekatan yang diberikan kebutuhan saya. Jika Anda perlu sesuatu yang diklarifikasi, silakan bertanya.
{
"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"
}
}
}