2010-01-05 2 views
0

이벤트 (스포츠 경기, 콘서트 등)를 표시 할 앱을 만들고 있습니다. 나는 스포츠 이벤트와 밴드/아티스트가 콘서트에서 뛰고있는 팀을 골라 낼 수있는 모델을 제시하려고합니다.이벤트 목록 데이터 모델

내 처음의 찌르기는 이벤트 테이블, 팀 테이블, 밴드/아티스트 테이블을 갖는 것입니다. 그러나 이벤트에서 공연하는 두 팀 또는 많은 밴드/아티스트를 처리하는 최적의 방법을 이해할 수는 없습니다.

레코드에 적용되지 않으면 여러 개의 필드가 NULL 이어도 괜찮습니까? 나는 항상 레코드의 NULL 필드의 양을 제한하는 것이 가장 좋다고 생각했다.

+0

'팀'과 '밴드'또는 '이벤트'가 기반으로하는 다른 유형의 '사람/물건'의 데이터 차이는 무엇입니까? 그들은 서로 다른 데이터를 가지고 있습니까? 아니면 단지 다른 유형의 것들입니까? –

답변

1

많은 공격 방법입니다.

분명히 이벤트 테이블이 있습니다.

스포츠 팀과 밴드를 별도의 테이블로 분리했는지 여부는 각각에 대해 유지하고있는 정보와 NULLS에 대한 느낌에 따라 다릅니다. 내 이해는 귀하의 기록에 널 (NULL)을 가짐으로써 성능에 거의 영향을 미치지 않는다는 것입니다 (데이터베이스마다 다를 것이라고 확신합니다). 스포츠 및 음악 관련 분야가 많이있는 경우 실제 단점은 잠재적으로 다루기 힘든 표입니다 함께 섞는다.

별도의 스포츠 및 콘서트 테이블을 만드는 경우 질문에서 "기타 등"을 처리하는 방법을 고려해야합니다. 어느 테이블에 마술사와 검 삼키기가 될까요?

이벤트로 여러 팀/액티비티를 연결하는 경우 해당 연결을 수행하기 위해 중간 테이블을 만드는 경향이 있습니다. 각 레코드는 이벤트 ID와 수행자 ID를 참조합니다. 이벤트 (1 명) 또는 스포츠 이벤트 (2 개 팀)를위한 2 개의 레코드 또는 많은 행동 콘서트를위한 n 개의 레코드를 가질 수 있습니다.

쇼 청구서를 가져 오려면 이벤트를 검색 한 다음 중간 테이블을 사용하여 해당 이벤트에 나타나는 모든 행위를 찾아 해당 ID를 사용하여 각 행위의 이름과 세부 정보를 얻으십시오.

+0

나는 최선의 방법을 찾기 위해 열심히 노력하고 있다고 생각한다. 내가 표 표 회사의 일부가 그것을 어떻게 취급하는지에 관해 볼 수 있기를 바란다. 그들은 분명히 데이터베이스를 올바르게 모델링했습니다. 큰 테이블을 가지고 있고 스포츠, 콘서트 또는 극장의 경우 몇 가지 NULL을 사용하는 것으로 처리하겠다고 생각합니다. – Seth

+0

티켓 회사가 올바르게 처리하고있는 경우 (그리고 얼마나 많은 대기업이 나쁘게 놀랍습니까?) 과거에는 수년 동안, 그리고 두 번째, 세 번째, 네 번째 시도를 통해 악화되었을 가능성이 높습니다. 이미 앞서 있습니다 만, 어느 시점에서 우리는 각각의 새 도메인이 학습 경험이며 앞으로 리팩터링이 될 것이라는 점을 받아 들여야합니다. 그에 따라 계획하고 예산을 세우고 일찍 반복 할 때 결과에 ​​더 많은 시간을 할애하십시오. 일찍이 리팩터링하는 것이 가장 쉽기 때문입니다. – Jay

+0

... 또한 데이터 스키마와 도메인/비즈니스 로직과 해당 데이터베이스간에 API/서비스 계층을 추가하는 것에 대해 걱정할 필요가 없습니다. 클라이언트 코드를 깨지 않고 데이터베이스를 마음의 컨텐츠로 리팩토링 할 수 있습니다 (예 : 청구서를 지불하는 사람들에게 실제로 작동하는 것을 제공 한 후 - 스키마에 신경 쓰지 않아도됩니다.). – Jay