이 시나리오의 아키텍처는 다음과 같습니다.이 데이터를 검색하는 가장 좋은 방법은 무엇입니까?
테이블과 양식 테이블이 여러 개 있습니다. 양식 자체가 항목을 소유하는 대신, 항목은 양식을 소유합니다. 이는 하나의 항목이 여러 양식에있을 수 있기 때문입니다 (각 유형 중 하나만 있지만 모든 항목이 필요하지는 않습니다). 양식과 항목은 모두 OrderId
으로 묶여 있습니다. 다음과 같이 표현할 수 있습니다.
OrderItems | Form A | Form B etc....
---------- |--------- |
ItemId |FormAId |
OrderId |OrderId |
FormAId |SomeField |
FormBId |OtherVar |
FormCId |etc...
이 형식의 경우에는 정상적으로 작동합니다. 그러나 여러 폼의 항목으로 구성되어 있기 때문에 OrderId
을 가질 수없는 다른 폼 (예 : FormX)이 있습니다. OrderItems
에는 FormXId
에 대한 열이 포함되어 있지만 하나의 OrderId
과 관련된 "FormX"목록을 얻는 가장 좋은 방법은 혼란 스럽습니다. 나는 MySQL을 사용하고 있으며 저장 프로 시저가이 작업을 수행하는 가장 좋은 방법이라고 생각하고 있었지만 MySQL에 저장된 proc을 사용하지는 못했고 가장 좋은 방법을 알지 못했습니다. 내 다른 (kludgy) 옵션은 DB를 두 번 치기 위해 먼저 주어진 OrderId
에 해당하는 모든 항목을 얻은 다음 FormXId
을 모두 가져온 다음 FormXId
을 모두 얻고 동적으로 SELECT
문을 수행합니다 (의사)
SELECT whatever FROM sometable WHERE FormXId=x OR FormXId=y....
은 분명히이 이상적이지,하지만 난 정말 다른 방법을 생각할 수 없다 ... 아무것도 나도 프로그램 또는 건축 할 수있는 더 나은? 내 백 엔드 코드는 ASP.NET입니다.
감사합니다.
UPDATE 대한 추가 정보 요청에 대한 응답으로
:
샘플 입력 :
FormXs:
-----------------
FormXId | FieldA | FieldB | etc
-------------------------------
1003 | value | value | ...
1020 | ... .. ..
1234 | .. . .. . . ...
당신은 문제를 볼
OrderId = 1000
샘플 출력이다 FormX 단 하나의이 없다.이 아니라 OrderId
의 모음입니다. 때로는 같은 주문의 여러 항목이 FormX에 있고, 때로는 하나 뿐인 경우가 대부분이며, 대부분의 주문에는 FormX에 대한 항목이 없습니다. 하지만 누군가가 주문을 내면, 수정/열람 할 수 있도록 모든 아이템이 나타나야합니다.
나는 위에서 말한 것을 수행하는 저장된 proc을 만들려고 생각하고 있는데, 하나의 쿼리를 실행하여 모든 관련 OrderId
을 풀고 다른 하나가 적절한 FormX를 반환하도록했습니다. 하지만 더 좋은 방법이 있어야합니다 ...
@omg 조랑말 - 내 질문을 업데이 트 ... plz 당신이 더 필요하면 말해. 감사! :) – Jason