새로운 iOS 앱에 대한 데이터 모델의 대부분을 알아 냈으니 잠시 생각해 본 문제에 봉착했습니다.NULL 값이없는 데이터베이스 디자인 및 iOS App 용 데이터 반복
'실험'에는 이름, 설명 및 소유자가 있습니다. 그것은 또한 하나의 '행동'과 하나의 '사건'을 가지고 있습니다.
'이벤트'는 시간, 위치 또는 속도와 다를 수 있습니다.
'이벤트'의 종류에 따라 '유형'이 다를 수 있습니다. 예를 들어 시간은 일회성, 간격, 날짜 범위, 반복 또는 임의 일 수 있습니다. 위치는 지역 또는 정확한 위치 일 수 있습니다.
각 '유형'에는 고유 한 데이터 형식이있는 값이 있습니다. Time One-Off는 12:15 pm의 날짜 값일 수 있으며 Location Exact는 (30.0, -20.0)의 GeoPoint 값일 수 있습니다. 데이터베이스가 NULL 값으로 을 가득되지 않도록
문제는
- 어떻게 데이터 모델을 설계 할 수 있습니까?
- '이벤트' 및 '유형'을 추가하면 데이터 모델을 확장 가능하도록 디자인하는 방법은 무엇입니까? 실험으로 생각
만이 NULL의 전체로 실험 테이블을 야기하지만 그렇게하지, 다른 테이블에이 두 가지를 분리하는 잘못된 행동과 하나의 이벤트가 될 것있다 값, 이벤트 유형, 이벤트 유형 및 이벤트 유형 값 중 하나를 입력 할 수있는 모든 가능한 데이터 유형을 보완하기 위해 컬럼을 가져야합니다.
이벤트와 이벤트 유형을 별도의 테이블로 구분하면 NULL 값 문제가 해결되지만, 특히 데이터가 반복되는 경우에는 반복되는 데이터로 수정 될 수 있습니다 (예 : 날짜, 정수, 문자열, geopoint 등). Type One-Off 이벤트는 12:00 pm과 같은 이벤트입니다. 다른 하나의 실험뿐만 아니라 다른 실험에서도 마찬가지입니다. (비록 내가 모든 가능성을 창조하고 이들과 함께 별도의 표를 채우지 않는 한, 어떻게하면 쉽게 이럴 수 있겠습니까?)
어쩌면 제가 복잡한 일을 끝내고 있습니다. 내가 그것을 볼 때 자신.
위즈 키드가, 감사합니다, 그 그림은 큰 도움이됩니다. 한 가지 - EventType은 전체 유형이 아닌 하나의 유형 만 가질 수 있습니다. 그래서 시간, 위치 또는 속도. – jcrowson
멋진데. 이벤트 유형이 단순한 이름 (예 : 목록) 이상인 경우 모델에서 개체를 개체로 나타내려고 할 수 있습니다. 당신이 말한대로 그 확실한 그 3 개의 실재물을 떨어 뜨리고 당신은 좋아야한다. 내가 생각한 방식은 이벤트가 3 가지 매우 다른 이벤트 유형 중 하나와 연관 될 수 있다는 것입니다. 이벤트 유형 엔티티는 시간, 위치, 속도가 해당 오브젝트와 관련된 세부 사항을 보유하는 동안 유형에 대한 설명 정보를 보유합니다 (예 : 시간 : 날짜, 시간, 시간 범위, 시간대 등). 행운을 빕니다. – Wizkid
물건은 - 나는 그들이 물건으로서 더 좋다고 생각한다. 문제는 NULL 값을 만들지 않고 세 객체와 Event Type 객체 사이의 관계를 만드는 것입니다. 단 하나만 필수이므로 다른 두 객체는 NULL입니다. 두 개의 더 많은 NULL 포인터가 없어도 Event Type 개체에서 단 하나의 개체 만 참조하려면 어떻게해야합니까? – jcrowson