Tôi đang làm việc trên một dự án nơi tôi đang cố gắng quyết định giữa việc sử dụng cơ sở dữ liệu quan hệ SQL hoặc các đối tượng JSON tiêu chuẩn để lưu trữ dữ liệu về một sự kiện hoặc hoạt động.
Dự án sẽ lưu trữ dữ liệu về nhiều loại sự kiện vì vậy tôi đã quyết định chỉ mô tả một loại sự kiện cho câu hỏi này.
Sự kiện âm nhạc trực tiếp (được mô tả đầy đủ bằng lược đồ JSON ở cuối câu hỏi này) là một đối tượng lưu trữ dữ liệu như nơi sự kiện sẽ diễn ra, thời gian / ngày của sự kiện và chi phí của sự kiện. Đối tượng sự kiện âm nhạc trực tiếp có cả một đối một (sự kiện -> tên, sự kiện -> mô tả) và một-nhiều (sự kiện -> địa điểm, sự kiện -> ngày, sự kiện -> loại vé ) các mối quan hệ. Hơn nữa, đối tượng sự kiện có thể chứa một hoặc nhiều ID người thực hiện, liên kết đến đối tượng người thực hiện. Đối tượng biểu diễn lưu trữ dữ liệu về các nhạc sĩ đang biểu diễn tại sự kiện âm nhạc trực tiếp.
Dữ liệu sẽ được người dùng truy vấn bằng cả hai cách đơn giản ("Tìm tôi sự kiện với 'x' tên") và phức tạp ("Tìm tôi sự kiện với thể loại nhạc 'x' và chi phí 'y' trong bán kính 'z' từ hiện tại của tôi vị trí ") truy vấn. Dữ liệu sẽ được gửi bởi người dùng bằng mẫu web.
Như bạn có thể biết từ lược đồ JSON đã xác định, ban đầu tôi sẽ sử dụng các đối tượng JSON để lưu trữ dữ liệu này nhưng tôi đã nghe một số người nói rằng vì dữ liệu của tôi hoàn toàn là quan hệ, tôi nên tuân theo các phương thức cũ hơn.
Tôi sẽ đánh giá cao bất kỳ suy nghĩ về ưu và nhược điểm của từng phương pháp cho nhu cầu của tôi. Nếu bạn cần bất cứ điều gì làm rõ, xin vui lòng hỏi.
{
"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"
}
}
}