2

私は Web 開発を始めており、PHP と MySQL を使い始めました。技術ブログに似た CMS を作ろうとしていて、データベースの設計に行き詰まっています。各投稿は、次のいずれかのタイプにすることができます。

  1. リッチ テキスト - 単一部分
  2. リッチ テキスト - 複数の部分
  3. ビデオリンク - 単品
  4. ビデオ リンク - 複数の部分
  5. アタッチメント - 単品
  6. 添付ファイル - 複数のパーツ

(添付ファイルは pdf、doc、ppt のいずれかです)

各投稿はセクションの下にあります。セクションはテーブルに格納されます。セクションの例は次のとおりです。

チュートリアル - すべてのタイプが許可されます コード スニペット - 1 つだけが許可されます ヒントまたはハック - 1、2、3、4 のみが許可されます ニュースの更新 - 1 と 3 のみが許可されます


だから私の質問は

  1. シングルパートとマルチパートの投稿を保存して区別するにはどうすればよいですか?
  2. 添付ファイルを保存するための実行可能な/最良の方法は何ですか?
  3. セクションと投稿を関連付けるにはどうすればよいですか? つまり、特定のセクションが投稿タイプ (すべて、1 のみ、1 と 2 のみなど) をサポートできることを知る/保存する方法です。

編集:単一の手段では、1つの投稿には1つの部分しかないことを意味し、マルチパートとは、1つの投稿に複数の部分を含めることができることを意味します

4

2 に答える 2

0
  1. 「シングル」とは、1 つの投稿が 1 つのセクションに関連していることを意味し、マルチパートとは、複数の投稿が 1 つのセクションに関連していることを意味しますか?

    db-design は...

    table section
    ---------------
    id (int, a-i)
    type (int) 1=tutorial, 2=code-snippet etc.
    name (varchar)
    ...
    
    table post
    ---------------
    id (int, a-i)
    section_id (int) key to section.id
    ordering (int) if multi for controlling which part is first, second etc. 
    type (int) 1=rich-text, 2=video, 3=attachment  <---- drop single/multi discrimination here
    single (int) 1=yes, 2=no <---- and put it here instead
    content (varchar) --> see below
    description (varchar) of this post
    

    注: 1 つの投稿は 1 つの投稿であり、複数の投稿は同じセクションにリンクされています。

  2. 添付ファイルを保存する場所: Web サーバーのファイル システムで、ファイル名を保持するデータベースtable.content。小さな投稿タイプ (リンクなど) は直接保存できますtable.content --> データベースをスリムに保ち、パフォーマンスを維持します

  3. 関連するセクションと投稿: by post.section_id. このように、1 つ以上の投稿をセクションにリンクできます。post.ordering正しい順序に並べるために使用します。

    section
    -------------------------- 
    id     | 1
    name   | "How to build a CMS"
    type   | 1 (tutorial) 
    
    post
    --------------------------
    id         | 1 
    section_id | 1
    ordering   | 0
    type       | 1 (rich-text)
    content    | "/files/130224_1_1_cms.rtf"
    ... 
    
    id         | 2
    section_id | 1
    ordering   | 1
    type       | 3 (video link)
    content    | "http://www.youtube.com/hgstersh/showid=23jfjr&blabla"
    ...
    

    どちらsection.typeがどのpost.types を持つことができますか?

    • 新しいセクションの作成時に、section.typeが設定されます (例: フォームのドロップダウン リスト)
    • このセクションの新しい投稿を作成すると、 のドロップダウン リストは、post-typeに基づいて許可されたタイプのみを提供します。これは、またはを使用section.typeして php-script で行われます。if...switch...case
于 2013-02-24T09:00:13.820 に答える
0

投稿に複数の画像、投稿、リンクを含めることができる場合、これは 1 対多の関係であり、典型的なスキーマは次のとおりです。

POST: id, title, ...
RICHTEXT: id, post_id, content
LINK: id, post_id, url

多対多の関係が必要な場合、たとえば、ストーリーには多くのリンクを含めることができますが、同じリンクが複数のストーリーに存在する可能性があります。

POST: id, title, ...
LINK: id, url
POSTS_LINKS: id, post_id, link_id

また、他の一般的なプラットフォームのスキーマを簡単に見てみましょう

于 2013-02-24T09:28:47.197 に答える