2010-06-28 4 views
0

C# 4.0, MS SQL 및 ADO.NET 엔티티 데이터 모델을 통해 생성 된 비즈니스 객체에 대한 (일 반적 인) 질문이 있습니다.비즈니스 모델 확장 및 데이터베이스에 저장하십시오.

  • ID 설명 NVARCHAR (20)
  • TITLE
  • 고유 식별자 텍스트
  • ADDITIONALDATA :

    의 내가 행과 MS SQL 표 푸를 가지고 있다고 가정 해 봅시다 이미지

초기 사용자 지정 데이터 (확장 속성 및 해당 값)를 ADDITIONALDATA 필드로 serialize하는 것이 처음 아이디어였습니다.

하지만 이제는 추가 속성을 지정할 수 있습니까? 구성 파일 (예 : web.config) 내에 있습니까? 아니면 이것을 달성하기위한 다른 표준 방법이 있습니까?

답변

1

여기에 정확히 무엇을 저장하려고하는지 자세히 설명해 줄 수 있습니까? "ADDITIONALDATA"에 일련 번호가 지정된 개체가 있으면 데이터에 액세스하기 위해 다른 도구 (예 :보고 도구)를 사용할 수 없게됩니다.

대부분의 경우 실제로 데이터베이스에 저장되는 내용을 모델링해야합니다. 속성은 대개 데이터베이스의 열과 대략 동일 할 수 있습니다. 이렇게하면 데이터베이스와 응용 프로그램을 어느 정도 분리 할 수 ​​있습니다. 그렇지 않으면 응용 프로그램이 데이터베이스를 읽는 방법을 알고있는 유일한 것입니다.

편집 :

그 접근 방식과 잠재적 인 함정이 많이가 있지만 당신은 엔티티 - 속성 - 값 모델을 사용할 수 있습니다. 또 다른 가능성은 데이터를 XML로 열에 저장하는 것입니다. 다시 말하지만, 문제가없는 것은 아닙니다. 적어도 SQL의 XML 기능을 사용하여 XML을 검색 할 수는 있지만 성능이 현저하지는 않습니다. 문제는 완전히 풀리지 않은 문제에 대한 일반적인 해결책을 제시하려고한다는 것입니다. 당신이 취하는 접근법은 그것 때문에 문제가 발생할 것입니다. 내가 골라야한다면, 나는 EAV 모델로, 아마도 XML을 가까이서 싫어한다.

+0

사용자에게 맞춤 제품 속성을 지정하는 것이 좋습니다. 그래서 가격, 무게 등과 같은 기본적인 속성이있을 것입니다. 그러나 더 많은 속성을 설정할 수있는 가능성을 제공하고 싶습니다. - 색상 및 크기 (또는 지금 생각할 수없는 다른 이국적인 것들, 그것이 바로 요점입니다.) 다른 접근 방식이 있습니까? –

+0

내 대답은 약간 길기 때문에 내 답변에 편집으로 포함 시켰습니다. –

+0

감사합니다.이 EAV 모델은 나쁘지는 않지만 잘 시도해 보겠습니다. 위키 피 디아 (Wikipedia)에서 그것을 읽으면서 익숙한 용어 예비 행렬을 발견했습니다.이 "모델"이 데이터 구조에 적용될 수 있다는 것을 알지 못했습니다. –

1

일부 데이터를 직렬화하고 열 (ADDITIONALDATA)에 배치 할 계획이라면 먼저 디자인에주의해야 할 몇 가지 사항은 열이 이미지 유형이 아니어야합니다. XML 형식을 사용하면 데이터를 저장할 수 있고 쿼리를 통해 쿼리 할 수 ​​있지만 쿼리를 사용하면 약간의 어려움이 있습니다.

Tom H.이 지적한대로 디자인에 결함이 있습니다. 대부분의 시간 동안 당신이 달성하고자하는 것에 사용되는 3 개의 테이블을 보게 될 것입니다.

  1. Foo를 저장하는 테이블.
  2. Foo 속성 유형을 저장하는 표. Foo_Att_ID, Foo_Att_Name
  3. 추가 Foo 속성 유형에 대한 값을 저장하는 표. Foo_ID, Foo_Att_ID, 값
+0

답변 해 주셔서 감사합니다. –