2012-02-04 4 views
-2

예를 들어, 상용 웹 사이트에서 로그인 사용자에게 광고 할 수 있습니다. 내 다른 게시물에 누군가 내 제품에 대한 모든 사용자 및 관련 코멘트에 대해 하나의 테이블 만 사용해야한다고 들었습니다.잠재적 인 구매자와 내 사이트

내 생각에 사용자 테이블 (사용자 이름, 주소, 전자 메일 주소, 해쉬 된 암호)이라는 사용자 정보를 저장할 테이블이 필요합니다. 한 사용자는 10 개의 댓글과 관련 게시물 날짜 및 시간을 가질 수 있습니다. 어떻게 이러한 정보를 동일한 사용자 테이블에 저장할 수 있습니까?

누군가 내게이 문제에 관해 알려주시겠습니까? 나는 각 사용자에 대해 새 테이블을 설정하기 때문에 혼란스러워 보이지만 일단 내 사이트에 로그인하면 특정 등록 된 사용자와 일치하는 만들어진 테이블을 선택하는 방법을 고려해야합니다. 도대체, 더 많이 내가 이것에 관해 생각하는 더 많이 종료하고 싶다.

+7

사용자 당 한 테이블에서 냄새가납니다. 이는 잘못된 디자인 일 가능성이 큽니다. – Mat

+8

데이터베이스 디자인 및 정규화에 대한 책을 구한 다음 구체적인 질문을하십시오. – CodeCaster

+0

이것은 OP가 참조하는 것입니다 : http://stackoverflow.com/a/9140361/451969 @ user1058271, 내가 무슨 말을하고 있었는지 예제에 대한 그 링크에서 내 대답을 참조하십시오. –

답변

1

사용자 당 테이블을 생성하면 문제가 발생합니다. 100K 사용자가 있다면 어떨까요?

모든 사용자에 대해 하나의 표를 제안하는 것이 가장 쉽고 쉬운 방법입니다. 개인적인 정보뿐만 아니라 userid - 자동 증분 -을 포함한 기본 구조를 권하고 싶습니다. 그런 다음 게시물을위한 별도의 테이블, 각 행은 게시물을 만드는 사람의 userid을 포함하며 postid 필드가 자동 증가합니다. 그런 다음 게시물에 대한 모든 댓글 (postid 사용)에 대한 별도의 표.

기본 구조는 다음 (나는 즉시이 쓰고 있어요) 될 것이다 :

CREATE TABLE users (
    userid INT NOT NULL AUTO INCREMENT, 
    name VARCHAR(50), 
); 

CREATE TABLE posts (
    postid INT NOT NULL AUTO INCREMENT, 
    userid INT NOT NULL, 
    post VARCHAR(500) 
); 

CREATE TABLE comments (
    commentid INT NOT NULL AUTO INCREMENT, 
    postid INT NOT NULL, 
    comment VARCHAR(200) 
); 

그리고 할 사용자 및 모든 관련 의견에 대한 게시물을 얻을 합류했다. 인덱스가 있어야합니다 (다른 SO 사용자가 말할 것이라고 확신 함). 그러나 독자의 연습 문제로 남겨 둡니다.

+0

그건 정말 대단합니다. 나는 그런 것을 아주 필요로한다! 생명을 구하는 답장을 보내 주셔서 대단히 감사합니다. – user1058272

+0

기본 및 외래 키는 어디에 있습니까 ?? 나쁜 디자인 ... –

+0

좋아, 어디 있니? – user1058272

관련 문제