2016-09-22 3 views
0

저는 저와 내 집에있는 사람들을 위해 요리 스케줄을 설정할 수있는 작은 asp.net mvc 응용 프로그램을 만들고 있습니다. 나는 날짜가 누구인지를 추적하는 DishDates라는 테이블을 가지고 있습니다. 현재 3 개의 열 (DishDateId, PersonId 및 Date)이 있습니다. DishDateId는 PK이고 PersonId는 Person 테이블의 FK이며 Date는 요리가있는 날짜입니다.날짜와 외래 키를 사용하는 ID 열을 추가해야합니까?

우리는 주어진 하루에 한 명의 요리사 만 있습니다. PersonId는 날짜에 연결됩니다. 내 앱에서 자동으로 한 달 동안 요리 달력을 생성 할 수 있습니다. 이제는 이미 생성 된 한 달 동안 새 요리 목록을 다시 생성 할 수 있으며 응용 프로그램은 해당 달의 기존 기록을 삭제 한 다음 작성합니다. 이 작업을 수행 할 때마다 DishDateId 필드는 ID 열이므로 증가합니다.

나는이 앱의 수명보다 길기에 충분할 20 억 개의 행을 여전히 가질 수 있기 때문에 이것이 실제로 문제가되지 않는다는 것을 안다. 그러나 ID 열을 사용하지 않고 PersonId 및 Date 필드가 있고 Date가 PK가되도록하는 것이 더 스마트 한 경우입니까? 신원 열이 어떤 방식 으로든 무언가 또는 불필요한 것처럼 느껴집니다. 그 다음 사람에게 매일 새로운 날짜를 지정하고 당신이 말한대로 또한 ID 열이 그대로

ScreenShot of DishDates Data

답변

1

PersonId 및 날짜 값을 다시 만들 때 임시 테이블에서 해당 값을 만들고 날짜와 일치하는 MERGE 함수를 사용할 수 있습니다 (상수 값과 주어진 행의 PersonId 변수 값이므로).

예, DateDishId 자체의 ID 열은 필요하지 않지만 위 프로세스를 사용하는 경우 행의 수는 동일한 Months '데이터의 모든 반복에 대해 증가하지 않습니다.

날짜를 사용하여 ID 열을 채우는 데 걸리는 시간을 계산할 수는 있지만 ID가 INT 일 가능성이 높은 경우 사용자, 나, 룸메이트 또는 세계가 주위에있을 가능성은 낮기 때문에 땀을 흘릴 필요가 없습니다.

0

예, 당신은 당신의 요구 사항에 따라 PK로 날짜를 설정할 수 있습니다.

혼란 : 날짜 열에 ID를 어떻게 할당합니까?

+0

날짜 열은 식별 열이 아닙니다. DishDateId 열은 ID 열입니다. 이 데이터베이스가 연결된 앱은 접시 날짜를 생성하고이 테이블로 보냅니다. 다시 한번 말하지만, 요구 사항이 주어지면 요리에 대해 하루에 한 명씩 만 있기 때문에 요리 시간은 독특합니다. – kcon90

관련 문제