2009-11-14 4 views
2

사용자를 위해 기사 데이터베이스를 만들고 싶었습니다. MySQL 데이터베이스 구조가 어떻게 생겼는지 궁금합니다.MySQL 기사 데이터베이스 구조?

내 데이터베이스 테이블 구조가 지금까지와 같은 방식입니다.

CREATE TABLE users_articles (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
user_id INT UNSIGNED NOT NULL, 
PRIMARY KEY (id) 
); 
+0

요구 사항에 대한 설명이 다소 모호하므로 더 자세히 설명하십시오. –

+0

우리는 당신의 필요를 모릅니다. 구조를 어떻게 설계 할 수 있습니까? –

+0

기사와 함께 기사 데이터베이스 구조를 더 좋게 만들 것이라고 생각하는지 궁금합니다. 나는? – articles

답변

3

아마 당신은 (3NF를 만족시키기 위해) 사용자와 별도로 기사를 저장할 것입니다. 이를 위해, 내가 좋아하는 뭔가를 시작 했죠 : 기본 키에 대한

Users: 
    UserId int primary key. 
    Other user-specific data (name, address, affiliations, ...). 

Articles: 
    ArticleId int primary key. 
    UserId references Users(UserId). 
    ArticleText varchar(big-enough-to-hold-article). 

데이터 유형은 (그들이 3NF 측면에 영향을 미치지 않습니다) 당신의 손에 있습니다.

기사 텍스트를 단락으로 나누거나 기사에 키워드를 추가 할 것인지 등등 확장 할 수 있습니다. 여기서부터 시작해야합니다.

위의 기본 구조를 넘어서고있을 것이라는 점을 바로 염두에 두어야 할 사항입니다. 기사에 대한

  • 키워드 또는 검색어, 키워드와 기사 사이의 다 대다 관계를 유지하는 키워드를 자신과 다른 사람을 잡고, 다른 두 테이블에서 하나를 유지했다.
  • 기사의 개요는 단순히 기사 테이블의 다른 열일 수 있습니다.
  • 할당 된 최대 공간 이상을 필요로하는 기사.이 경우 기사 텍스트는 Articles(ArticleId)에 대한 외래 키 참조와 일련 번호로 기사 테이블을 정렬하여 다른 테이블로 나눌 수 있습니다.
+1

OP가 시작할 수있는 좋은 대답입니다. –

1

답변은 실제로 기사 테이블이 아닌 전체 애플리케이션의 사양에 따라 달라집니다.

질문에서 create 문을 보면 조인 테이블 일 수있는 것처럼 보입니다. 많은 사용자가 많은 기사를 많이 가지고 있습니다. 이 경우 user_id와 article_id 만 사용하여 기본 키가 될 수 있지만 사용자 및 기사 테이블은 어디에 있으며이 테이블에 어떤 정보를 저장 하시겠습니까?

  1. 전체 응용 프로그램이 작동하는 방법에 대한 대략적인 스펙이 있습니까?
  2. 기사와 관련된 다른 데이터 요소가 있습니까?
  3. 앞으로 응용 프로그램의 범위를 확장 할 가능성을 고려해야합니까?

Database Normalization에 대한 자세한 내용은 도움이 될 것입니다.

1

MySql의 support for full-text indexing and searching 을 사용하면 기사의 텍스트를 검색 할 수 있지만 이러한 인덱스를 사용할 때의 절충점을 이해하는 것은 반드시 초보자 용 것은 아닙니다.

관련 문제