Bir olay veya etkinlikle ilgili verileri depolamak için standart bir SQL ilişkisel veritabanı veya JSON nesneleri kullanma arasında karar vermeye çalıştığım bir proje üzerinde çalışıyorum.
Proje birden fazla etkinlik türünde veri depolayacaktır, bu yüzden bu soru için yalnızca bir etkinlik türünü tanımlamaya karar verdim.
Canlı müzik etkinliği (bu sorunun altındaki JSON şeması kullanılarak tam olarak açıklanmıştır), etkinliğin gerçekleşeceği yer, etkinliğin saati / tarihi ve etkinliğin maliyeti gibi verileri depolayan bir nesnedir. Canlı müzik etkinliği nesnesinde hem bire bir (etkinlik -> ad, etkinlik -> açıklama) ve bire çok (etkinlik -> mekanlar, etkinlik -> tarihler, etkinlik -> bilet türleri vardır. ) ilişkiler. Ayrıca, olay nesnesi, performans nesnesine bağlantı veren bir veya daha fazla performans kimliği içerebilir. Sanatçı nesnesi, canlı müzik etkinliğinde performans gösteren müzisyenlerle ilgili verileri depolar.
Veriler, kullanıcılar tarafından hem basit ("Beni 'x' adıyla olayları bul") hem de karmaşık ("Beni 'x' müzik türüne sahip olayları bul ve mevcut olan 'z" yarıçapında' y 'maliyetiyle bul konum ") sorgular. Veriler, kullanıcılar tarafından bir web formu kullanılarak gönderilecektir.
Tanımlanan JSON şemasından muhtemelen söyleyebileceğiniz gibi, başlangıçta bu verileri depolamak için JSON nesnelerini kullanacaktım, ancak verilerim tamamen ilişkisel olduğundan, eski yöntemlere bağlı kalmam gerektiğini söyleyen bazı insanlardan duydum.
İhtiyaçlarım doğrultusunda her yaklaşımın artıları ve eksileri hakkındaki düşüncelerimi takdir ediyorum. Eğer net bir şeye ihtiyacınız olursa, lütfen sormaya çekinmeyin.
{
"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"
}
}
}