2009-06-30 3 views
0

사용자 테이블에서 시스템 테이블보기와 관계가 있습니까? 컨텍스트를 제공하려면 내 테이블 중 하나에 내 열 이름을 제한 할 수있는 내 테이블의 다른 하나의 열이있는 시스템보기를 통해 이동하여 가장 쉬운 것 같습니다. 두 번째 테이블의 이름.시스템 테이블/뷰와 관계가 있습니까?

따라서 고전적인 예를 사용하면 Customers (FirstName LastName) 테이블이 있으면 "CustomerAttribute"열이 "FirstName"또는 "LastName"일 수있는 다른 테이블을 만들고 싶습니다. 이 동적을 유지하려면 "customerAttribute"열이 실제로 Customer 테이블의 열 이름을 저장하는 시스템 뷰의 외래 키일 경우 좋을 것입니다. 그런 식으로 실제 Customers 테이블에서 열이 추가, 삭제 및 이름이 변경됨에 따라 데이터 무결성 문제에 대해 걱정할 필요가 없습니다.

SQL Server에서이 관계를 쉽게 만들 수있는 방법을 찾지 못했습니다. 그래서 시스템 테이블 및 뷰와의 관계를 만들거나 만들면 큰 문제가 아닌지 궁금합니다.

감사합니다.

P. 나는이 질문을 통해 내가 another problem을 해결할 수 있도록 도와달라고 요청했다.

편집 : 직접 시스템보기에 관계를 설정할 수 없더라도 쿼리를 시스템보기로 반환하여 열 이름을 가져온보기를 만든 다음 해당보기와 관계를 만들 수 있습니다. 나는 지금 그것을 시도 할 것이다.

+0

나는 이렇게 설계된 시스템에서 작업하지 않아도되기를 바랍니다. –

+0

합법적인지 알 수는 있지만 잘 모르겠습니다.) 죄송합니다. – Janusz

답변

2

분명히 시스템 테이블 열을 참조하는 사용자 테이블 열을 만들지 못하게 할 수 있습니다. 분명한 대답은 예입니다. 실제 질문에 대답하려면 다른 질문을하는 것이 필요합니다. 즉, 사용자 테이블에 메타 데이터를 저장하는 것이 좋은 생각입니까?

데이터 관리 주의자 입장에서 대답한다면 거의 항상 나쁜 생각이라고 할 수 있습니다. 그러나 실용적인 문제로서, 비록 내가 자랑스럽지는 않지만 그것을했습니다. 데이터와 메타 데이터를 혼합하지 않고 습득하기가 거의 불가능한 데이터와 메타 데이터를 혼합하여 얻을 수있는 몇 가지 결과가 있습니다.

위험은 결국 주제 전문가에게 이해할 수있는 속성 측면에서 문서화 할 수없는 데이터베이스로 끝날 위험이 있습니다. 다시 말해, 귀하의 데이터베이스는 귀하 자신과 동료들만이 사용할 수 있습니다. 때때로 그것은 받아 들일만한 위험입니다. 때로는 그렇지 않습니다.

0

나는 가능한지 확실하지 않지만, 그렇다면 위험한 곳을 확실히 밟고 있습니다 ... 어떻게 이름을 바꿉니 까? 어떻게 칼럼을 옮기시겠습니까? 열을 어떻게 삭제 하시겠습니까? 이런 유형의 것은 아마도 SSMS 내부에서 많은 부분을 망칠 것입니다. 이 유형의 것은 트리거 또는 코드 논리에서 더 잘 처리됩니다.

1

MS는 경고없이 시스템 테이블을 변경할 수 있으므로 시스템 테이블에 대한 종속성은 항상 나쁜 생각입니다. information schema views은 휴대용이면서 메타 데이터를 쿼리해야하는 응용 프로그램을 지원하기 위해 사용되는 이유는 무엇입니까?

+0

은 참을 수 없습니다. 실제로 더 자세히 살펴 보았습니다. 그러나보기에 종속성을 추가하는 것은 좋지 않습니까? 아니면 받아 들일 수 있습니까? – JoeCool

+0

나는 그것이 받아 들일 수 있다고 생각한다.대안은 과거에 "메타 데이터"테이블을 유지하는 것이 었습니다. 이는 정보 스키마와 같은 표준화 된 기능을 사용할 수 있다면 분명히 어리석은 일입니다. –

+0

당신이 그걸 소유하고 있다면 그것은 바보입니다. 이 경우에는 Microsoft가 소유하고 있습니다. (물론 표준이 있습니다. 물론 Microsoft는 표준에 대해 십자형을 사용하지 않습니다.) – dkretz

관련 문제