표준 SQL 관계형 데이터베이스 또는 JSON 객체를 사용하여 이벤트 또는 활동에 대한 데이터를 저장하도록 결정하려는 프로젝트를 진행 중입니다.
프로젝트는 여러 이벤트 유형에 데이터를 저장하므로이 질문에 대해 하나의 이벤트 유형 만 설명하기로 결정했습니다.
라이브 음악 이벤트 (이 질문의 맨 아래에 JSON 스키마를 사용하여 전체 설명)는 이벤트가 발생하는 위치, 이벤트 시간 / 날짜 및 이벤트 비용과 같은 데이터를 저장하는 객체입니다. 라이브 음악 이벤트 오브젝트에는 일대일 (이벤트-> 이름, 이벤트-> 설명) 및 일대 다 (이벤트-> 장소, 이벤트-> 날짜, 이벤트-> 티켓 유형이 있습니다. ) 관계. 또한, 이벤트 오브젝트는 하나 이상의 수행자 ID를 포함 할 수 있으며, 이는 수행자 오브젝트에 링크됩니다. 퍼포머 오브젝트는 라이브 음악 이벤트에서 연주하는 음악가에 대한 데이터를 저장합니다.
사용자는 단순 ( 'x'이름의 이벤트 찾기 ') 및 복잡한 ('x '음악 장르의 이벤트 찾기 및 현재'z '반경 내에서'y '비용을 사용하여 사용자가 데이터를 쿼리합니다. location ") 검색어 웹 양식을 사용하여 사용자가 데이터를 제출합니다.
정의 된 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"
}
}
}