2010-04-25 4 views
1

전자 메일 프로모션을 보낼 고객의 데이터베이스를 만들고 있습니다. 데이터베이스에는 약 12 ​​명의 고객이 모두 포함될 것이며 각각 평균 ​​2100 명의 고객이 있습니다. 나는 고객의 목록을 담고있는 각 클라이언트에 대해 DB에 테이블을 두는 것이 낫지 않을까 아니면 단지 하나의 큰 테이블을 만들어야하는지 궁금합니다 ...MYSQL에서는 하나의 큰 테이블 또는 여러 개의 작은 테이블을 갖는 것이 더 낫습니다.

매일 고객에게 질의됩니다. .

나는 그것이 광범위한 질문이지만 어떤 조언을 주시면 감사하겠습니다.

건배,

척 모든 현대적인 데이터베이스에 대한 땅콩 (당신이 적절한 인덱스를 제공하는 경우, 즉)입니다

답변

3

12 * 2100 = 25200 기록.

이렇게 큰 테이블 하나를 만드십시오. (쿼리가 쉬워지면 일종의 임시 테이블입니다.)

EDIT : 그렇지 않으면 Duffymo가 제안한대로 정규화 경로를 사용합니다.

+0

나는 모두를 위해 하나의 큰 테이블을 사용했다. 반복 고객이 몇 명 있지만 25000에서 약 10 명 밖에 없습니다. –

+0

메일 서버의 경우 SendGrid를 사용하고 있습니다. –

5

내 고객의 12와 그들 각각은 에게 2100 개 고객

이 쉬운 호출 인의 평균 있습니다 : 그것은 고객과 고객 간의 일대 다 관계의를, 그래서 왜하지 둘 사이에 외래 키 관계가있는 두 개의 테이블? JOIN은 비용이 많이 들지 않습니다. 나는 그것을 정상화하는 것이 좋습니다. 행 수는 간단합니다.

고객 테이블의 전자 메일 주소 열에 UNIQUE 제약 조건을 추가해야합니다.

3

데이터베이스 성능에 대해 걱정할 필요는 없지만 보내는 전자 메일의 수는 25,200 개입니다. 전자 메일은 메일 서버에 많은 부담을 줄 것입니다.

별도의 테이블을 유지해야하는 또 다른 이유가있을 수 있습니다. 작업하는 전자 메일 주소는 별도의 클라이언트의 기밀 데이터입니다. 별도의 테이블을 유지하는 것이 혼란을 방지하는 데 도움이되는 추가 레이어라는 이유가 있습니다. 또한 테이블 (= 클라이언트)을 쉽게 덤프, 삭제 및/또는 추가 할 수 있습니다.

0

큰 테이블 하나와 여러 개의 뷰를 가질 수 있습니다.
보기에서 삽입, 업데이트, 삭제를 직접 수행 할 수 있습니다.

관련 문제