2

私は Web 開発に不慣れで、ユーザーが写真やその他のファイル (つまり、.doc、.xls、.ppt、.txt、.pdf など) をプロフィール ページ、投稿、コメントにアップロードできる Web サイトを実装しようとしています。 . 私はファイル ストレージに s3 バケットを使用しており、mysql データベースを使用してファイルの URL やその他の関連データを保存します。私が混乱しているのは次のとおりです。

これらのうち、最良のアイデアはどれですか?

a) プロファイル、投稿、コメントのそれぞれに対してファイル テーブルを作成し、指定されたオブジェクト (投稿、コメント、またはプロファイル) の ID (A FK) に関連付けられているすべてのファイルを取得します。

b) 「type」という名前のフィールド (「profile」、「post」、「comment」のいずれか) と、「id」という名前のフィールドを持つ 1 つのファイル テーブルを作成します。これは、 「タイプ」フィールド。

c) 誰もがより有利だと思う完全に異なるスキーマを使用する

編集:各ファイルをアップローダー(user_id)に関連付けるだけでなく、アップロードされたエンティティ(つまり、プロファイル、投稿、コメント)にも関連付けたい

4

3 に答える 3

3

Files次のようなテーブルを1つ作成します

Files
|id|file_path|...(other information about the file)

PostCommentおよびProfileが1つのファイルのみを含むことができる場合は、次file_idのようなテーブルに直接追加できます。

Posts
|id|data|...|file_id|

複数のファイルを含めることができる場合は、次のようなマッピングテーブルが必要になります。

Posts
|id|data|...

Posts_Files_Mapping
|post_id|file_id|
于 2012-07-17T20:49:07.580 に答える
0

ファイルは常に同じ「もの」に属しますか?あなたの場合、おそらくユーザー、またはUserProfileまたはPersonですか?

その場合、すべてのタイプのファイルに適用され、ファイルタイプを区別するための「type」フィールドを含む一連の汎用フィールドを定義します。

このようなものが機能する可能性があります

- User/Person/UserProfile/Account
userId (PK)
firstname
lastname

- File
fileId (PK)
title
description
fileType
userId (FK)
size

これは、ファイルをユーザーに直接リンクしたいが、Facebookのように、ファイルを配置した投稿にリンクさせたい場合のモデルです。その場合、投稿のコンテンツの一部としてファイルへのリンクを埋め込み、投稿をユーザーにリンクします。

それはあなたのニーズが何であるかに依存します。

于 2012-07-17T20:57:04.183 に答える
0

あなたが言うように、あなたは Web 開発の初心者です。

mysql のようなリレーショナル型のデータベースをスキップして、 mongodbのような「NOSQL」データベースを使用することを検討する必要があります。

mongodbには多くの利点がありますが、主要なものの 1 つは、同じコレクション/テーブル内にさまざまな種類のデータを格納できる「スキームレス」データベースの概念です。

ただし、これが簡単な方法だとは思わないでください。データをモデル化する最善の方法を十分に理解する必要があります。

于 2012-07-17T20:59:22.733 に答える