Pracuję nad projektem, w którym próbuję zdecydować się na użycie standardowej relacyjnej bazy danych SQL lub obiektów JSON do przechowywania danych o zdarzeniu lub działaniu.
Projekt będzie przechowywać dane dotyczące wielu typów zdarzeń, dlatego postanowiłem opisać tylko jeden typ zdarzenia dla tego pytania.
Wydarzenie z muzyką na żywo (opisane w całości przy użyciu schematu JSON na dole tego pytania) to obiekt, który przechowuje dane, takie jak miejsce zdarzenia, czas / data wydarzenia i koszt wydarzenia. Obiekt zdarzenia muzyki na żywo ma zarówno jeden do jednego (wydarzenie -> nazwa, wydarzenie -> opis), jak i jeden do wielu (wydarzenie -> miejsca, wydarzenie -> daty, wydarzenie -> typy biletów ) relacje. Ponadto obiekt zdarzenia może zawierać jeden lub więcej identyfikatorów wykonawców, które łączą się z obiektem wykonawców. Obiekt wykonawcy przechowuje dane dotyczące muzyków, którzy występują na imprezie z muzyką na żywo.
Dane będą wyszukiwane przez użytkowników przy użyciu zarówno prostych („Znajdź mnie wydarzeń o nazwie„ x ””), jak i złożonych („Znajdź mnie wydarzeń z gatunkiem muzycznym„ x ”i kosztem„ y ”w promieniu„ z ”od mojego obecnego lokalizacja ”). Dane zostaną przesłane przez użytkowników za pomocą formularza internetowego.
Jak zapewne można stwierdzić po zdefiniowanym schemacie JSON, pierwotnie zamierzałem używać obiektów JSON do przechowywania tych danych, ale słyszałem od niektórych osób, które twierdzą, że ponieważ moje dane są czysto relacyjne, powinienem trzymać się starszych metod.
Byłbym wdzięczny za wszelkie przemyślenia na temat zalet i wad każdego podejścia, biorąc pod uwagę moje potrzeby. Jeśli potrzebujesz czegoś wyjaśnionego, możesz zapytać.
{
"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"
}
}
}