2012-09-14 3 views
1

저는 Android 애플리케이션과 JSON 웹 서비스를 개발 중입니다. 양측 모두 데이터베이스를 가지며 두 데이터베이스 모두 동일한 데이터베이스 스키마를 갖습니다.거의 동일한 두 테이블

QAP 및 결함은 서버 측 데이터베이스의 복사본입니다. 해당 테이블에 행을 추가 할 수 없습니다.

사용자는 결함 이름과 CRS, CRF, MAMI의 4 개의 열이있는 양식을 갖게됩니다. 이 네 열에는 사용자가 일부 값을 삽입합니다. 결함의 이름은 Defect.description이고 CRS, CRF, MA 및 MI 값은 현재 E-Report의 일부가됩니다.

이 값 (CRS, CRF, MA 및 MI)을 저장하려면 eReportDefect을 사용합니다.

내 문제는 사용자가 더 많은 결함을 추가 할 수 있다는 것입니다. 결함 테이블에 행을 더 추가 할 수 있으면 문제가 없지만 그럴 수는 없습니다. 그것을 해결하기 위해 내가 UserDefect에게 테이블을 추가 한하지만 거의 동일, UserDefect 두 테이블, eReportDefect을 가지고 있기 때문에 이것은 좋은 방법입니다 있는지 확실하지 않습니다.

그리고 내가로 ereport 채워 모든 결함에 대한 "또 다른 문제"가, 나 0 개, 1 개 이상의 이미지 (테이블 eReportDefImgUserDefImg)를 가질 수있다.

이 디자인이 "정상"인가, 아니면 개선 될 수 있습니까?

enter image description here

+0

정상화와 관련하여 모델에 아무 문제가 없습니다. 결함과 사용자 결함을 구별해야합니다. 모델 만이 엔티티 간의 관계를 정확하게 설명하는지 알려줄 수 있습니다. –

답변

0

나는 기본 키 정의에 약간의 "오래된 학교"접근 방식을 볼 수 있습니다. ;-) eReportDefect 테이블에 대해서는 ""이 이미 고유하다는 것을 이해하고 있으므로 "qapId"과 "eReportId"은 인덱스가 더 느려지므로 인덱스가 더 커질 수 있습니다. 또한이 경우에는 열 위치도 다릅니다 최고야. DefectDefectImg 테이블 내에서 올바른 오류가 발생하지만 동일한 실수는 eReportDefImg 내에 있습니다.

좋습니다, eReportDefect 테이블을 수정할 수 없다면 다른 테이블을 만드는 것과 같은 다른 방법이 없습니다.

다른 이미지, 이미지. 올바르게 이해하면 테이블 eReportDefImg을 수정할 수 있으므로 UserDefImg 테이블이 필요없고 이미지 테이블도 필요하지 않습니다. NULL IS

PK image_id 
FK userDefectId 
FK defectId 

userDefectId 경우, defectId가 null는 아니고, 포인트 eReportDefect, 그리고 주변의 다른 방법 대신 그 세 개의 테이블 당신이 가진 하나 개의 DefectImg 테이블을 사용할 수 있습니다. 이렇게하면 UserDefectImgeReportDefImg 테이블을 통해 저장 및 시간이 많이 소요되는 조인을 줄일 수 있습니다. 하나의 이미지가 하나 이상의 결함에 들어갈 수 있다면 실제로 필요합니다.

관련 문제