2017-12-26 18 views
1

기사가 들어있는 웹 사이트를 만들고 있습니다.이 기사는 사용자가 로그인 할 때까지 표시되지 않습니다. 두 개의 단추를 추가 할 계획이라면 첫 번째 단추는 "이 기사를 따르라", 두 번째 단추는 기사를 즐겨 찾기로 만들기위한 것입니다. 내 질문은 어떻게 내 데이터베이스에서 구조 수 있습니까? 내 웹 사이트의 사용자 동작 (팔로우, 즐겨 찾기 ...)을 저장하기 위해 내 DB를 구성하는 방법

난 그냥 id_article, id_user, followed(1 or 0)favourite (1 or 0)을 포함, 또는 좀 더 메모리 공간을 절약 할 것이다 다른 해결책이 테이블을 추가해야 하는가?

참고 : 내 웹 사이트에는 많은 사용자가 방문하는 기사가 많이 있습니다.

+1

제안 된 디자인이 좋습니다. 사용자에 대한 기사는 다 대다 (귀하의 설명에서 알 수 있듯이)이며 기사를 따를 경우에만 기사를 좋아할 수 있다고 가정합니다. 이 관계 테이블의 크기는 기사의 크기에 비해 작을 것입니다. 그래서 그것에 대해 걱정하지 않습니까? 얼마나 많은 기사와 사용자가있을 것으로 예상합니까? –

+0

답장을 보내 주셔서 감사합니다. 수천 개의 기사와 수백 명의 사용자가 있기 때문에 가능하면 최적화 된 솔루션을 찾기 위해 호핑을 드렸습니다. –

+0

어떤 브랜드의 데이터베이스를 사용하고 있습니까? 모든 선도자들은 아무런 문제없이이 책들을 다룰 것입니다. 내 랩톱에서 가장 큰 테이블에 수백만 행의 데이터베이스가 있습니다. 내 랩탑보다 용량이 큰 UNIX 서버를 사용하게 되었기를 바랍니다. 내 테이블은 관계 테이블보다 훨씬 넓으며 잘 작동합니다. 백만 개의 관계가 있고 id가 정수이고 "추종 된"및 "즐겨 찾기"가 단일 바이트 인 경우 10MB의 데이터가 있습니다. 그것은 대부분의 시간에 기억에 남을 것입니다. –

답변

0

articles_followed (id, id_article, id_user)articles_favourite (id, id_article, id_user)의 두 가지 별도의 관계를 설정하십시오. (어떤 점에서) 데이터베이스를 샤딩

  • ,

    • 각 관계에 대한 구체적인 새로운 속성을 추가 : 이것은 당신에게 충분한 유연성을 줄 것이다 그들이 아니기 때문에 서로 한 관계를 이동하기 쉬울 것 서로
    • 동시 갱신에 따라 :이 있는지 : 당신은
    • 당신은 is_followed 또는 is_favourite 플래그를 보관할 필요가없는, 또한, 당신은 트랜잭션 가시성 적은 문제가있을 것,이 두 가지에 별도의 잠금 장치를 사용할 수 있습니다 엔트리는 기사가 따라 온다는 것을 의미합니다 (unfollow되면 줄을 지우십시오)

    도메인 클래스 구조에 대해 생각해보십시오. 어느 옵션이 더 편리합니까? 나는 두 개의 분리 된 관계가있을 경우 더 명확해질 것입니다.

  • +1

    기사가 따라 붙지 않고 즐겨 찾기가 될 수 있다면 (그리고, 분명히, 나는 생각합니다) 좋아하는 것없이 따라갈 수 있다면 나는 두 개의 관계 테이블이 더 좋을 것이라고 동의합니다. 필요없는 속성을 추가하지 마십시오. 날짜에 신경 쓰지 않는다면 날짜를 포함시키지 마십시오. 요구 사항이되면 나중에 언제든지 추가 할 수 있습니다. –

    +0

    동의 함 @Ron Ballard, 기본적으로 필요하지 않으므로 날짜를 삭제했습니다. – sainr

    +1

    많은 도움을 주셔서 감사합니다 ... 두 테이블을 만드는 것이 가장 좋은 해결책이라고 생각합니다. –

    관련 문제