"해시태그"를 사용하는 앱의 데이터베이스 설계
데이터베이스 설계 질문입니다.
예를 들어, 우리가 20-40개의 단어 노트에 해시태그를 사용하는 웹앱 같은 것을 가지고 있었다고 치자.사용자의 해시태그를 저장하는 가장 좋은 방법은 무엇입니까?
예를 들어, 사용자가 입력한 경우."I like to have #lunch at #sizzler"
문장을 텍스트로 저장하고 해시태그를 JSON, 쉼표로 구분된 목록 또는 기타 메커니즘으로 저장할 수 있습니다.
또한 얼마나 많은 사람들이 점심식사에 해시태그를 달았는지 등과 같이 태그를 검색할 수 있어야 한다는 점도 지적할 필요가 있습니다.
이 문제에 대한 조언이 좋을 것 같습니다. 가변 크기 입력을 mysql에 저장하는 것에 관해서는 항상 약간 난처합니다.한 노트에 해시태그가 무한히 있을 수 있는데, 저장하는 가장 좋은 방법은 무엇인가요?
메시지와 태그 간의 전형적인 다대다 관계를 선택하는 것이 좋습니다.
그러면 테이블이 3개 필요합니다.
Messages
(주로)Id
,UserId
그리고.Content
)Tags
(주로)Id
그리고.TagName
)TagMessageRelations
(선택사항:MessageId
그리고.TagId
- 메시지와 태그 사이의 연결 - 가리키는 외래 키를 통해Messages.Id
/Tags.Id
)
이렇게 하면 태그를 여러 번 저장하지 않고 메시지에 대한 새 관계만 만듭니다(물론 태그가 태그 테이블에 이미 있는 경우).
이렇게 하면 됩니다.
- 태그 수를 쉽게 세어봅니다 (
SELECT COUNT(*) FROM Tags
) - 각 태그를 한 번만 저장하고 태그 검색을 쉽게 인덱싱할 수 있습니다.
- 또는 사용자당 특정 태그를 몇 번 사용했는지를 세는 경우(예:
SELECT COUNT(*) FROM Tags INNER JOIN TagMessageRelations ON Tags.Id = TagMessageRelations.TagId INNER JOIN Messages ON TagMessageRelations.MessageId = Messages.Id GROUP BY Messages.UserId
언급URL : https://stackoverflow.com/questions/24799753/database-design-for-apps-using-hashtags
'programing' 카테고리의 다른 글
SELECT DISTINCT와 SELECT UNIUIC의 차이 (0) | 2023.09.07 |
---|---|
mariadb에서 정수를 이진으로 캐스트하는 방법 (0) | 2023.09.07 |
Python의 목록에서 __str_에 대해 혼동함 (0) | 2023.09.07 |
MySQL SELECT x from a where not in (b에서 x 선택) - 예기치 않은 결과 (0) | 2023.09.07 |
소문자를 대문자로 변경하는 MySql 쿼리 (0) | 2023.09.07 |