2011-11-18 4 views
2

자주 사용되는 데이터베이스 테이블 ID를 저장하는 가장 좋은 방법은 무엇입니까?일반적으로 사용되는 데이터베이스 테이블 ID를 저장하는 가장 좋은 방법은 무엇입니까?

예를 들어 활성 삭제, 제거 등의 레코드 상태를 저장하는 테이블이 있습니다. 새 사용자 레코드를 만들고 RecordStatusID를 설정해야합니다. 데이터를 어디에서 가져올 수 있습니까? 데이터베이스 호출합니까?

개발자가 테이블 int ID와 일치하는 열거 형을 만드는 것을 보았습니다. 그러나 이것이 최선의 방법이라고 생각하지 않습니다.

+2

가장 좋은 방법은 무엇입니까? 공연? 메모리 사용? 개발? 일관성? – Oded

+0

@Oded 솔직히 말해서 나는 그 중 하나에 대한 제안을 듣고 싶습니다만, 아마 저에게 저는 성과를 선택할 것입니다. – NullReference

답변

5

응용 프로그램 논리가 이러한 값에 따라 다르면 테이블을 변경하면 코드가 변경된다는 의미이므로 테이블을 반영하는 열거 형을 만드는 것이 좋습니다.

이 작업을 수행하면 오타가 포함될 수있는 마술 문자열이 필요없이 읽을 수있는 코드가 만들어집니다 (열거 형 정의에서 마술 번호로 대체 할지라도). 그리고 코드는 불필요한 쿼리없이 효율적입니다.

+2

나도이 방법을 많이 사용했고 제대로 작동한다는 것을 알았다. 필자가 가진 유일한 문제는 id에 ID 열을 사용하면 새로운 데이터베이스로 데이터를 마이그레이션하는 것입니다 (예 : identityinsert를 설정하는 등). 그러나 잊어 버린 경우에는 문제가 될 수 있습니다. –

+0

+1 네, 저의 접근 방식도 마찬가지입니다. T4에서는 데이터베이스 테이블에서 열거 형 파일을 직접 생성 할 수도 있습니다. –

+0

@DavidHall, 이와 같은 테이블은 대개 비교적 작고 거의 수정되지 않으므로 아무런 이유가 없습니다 ID에 대해 ID 열을 사용합니다. – svick

1

이것은 많은 요인과 이러한 요인들 간의 절충에 달려 있습니다. 예를 들어 변경되지 않는 10 개의 행이있는 테이블이있는 경우에는 응용 프로그램을 시작하고 캐시에서 작업 할 때 emum을 정의하거나 한 번 읽을 수 있습니다. 그러나 데이터가 (드물기는하지만) 변경 될 수도 있고 한 번 캐싱하는 것은 끔찍한 전략이 될 수있는 경우가 많이 있습니다. 이러한 문맥 정보가 없어도 이와 같은 질문에 답하기는 어렵습니다. 이와 같은 문제에 대한 해결책은 하나도 없습니다.

처리중인 데이터에 대한 구체적인 정보를 제공해 주실 수 있습니까? 그것은 우연히 당신을 물기 위해 돌아 오지 않을 더 좋은 해답이 될 가능성이 높습니다.

1

기본 값이 포함 된 응용 프로그램 시작시 테이블을 만들고이를 읽고 Dictionary 개체에 저장할 수 있습니다. 그런 다음 .NET 코드 내에서 이름으로 값에 액세스하면됩니다. 그렇게하면 값을 변경해야하는 경우 .NET 코드를 업데이트 할 필요없이 데이터베이스에서 값을 변경할 수 있습니다.

관련 문제