2010-12-11 13 views
7

私は最初のWebアプリケーションを書いています。スキーマは重要だが、実際に良いものを書く方法を知るには不十分であることを知るためのデータベースについて十分に知っています。Webアプリケーションの各ユーザーに新しいテーブルを作成する必要がありますか?

各ユーザーアカウントに格納されている情報を処理するための標準プロトコルはありますか?私の本能は、ユーザーのキーとログイン情報を格納する1つのテーブルと、そのテーブルのハンドル(おそらくはキー)を持って、各ユーザーごとに1つのテーブルを持つことです。

しかし、各ユーザーのためのテーブルを持っているか、それが非常にばかげているように見える場合は、パフォーマンス上の問題があるのだろうかと思います。基本的にすべてのWebアプリケーションにユーザーアカウントがあるので、これは "解決された問題"のように思われますが、検索で何かを見つけることができませんでした。さまざまな種類のWebデータを格納するための「解決済み」スキーマを持つリソースはありますか?

+0

これはちょっと古いと知っていますが、私はセキュリティ上の理由から同じ方法を考えていました。例えば、他のユーザが自分以外のテーブルに到達するのを防ぐ。 –

+0

@SalemFそうですね、このようにセキュリティ上の問題が発生する可能性がありますが、別のテーブルを持つセキュリティの問題がさらに深刻化しています。 簡単に言えば、あなたのウェブアプリケーションが今までにテーブルを作成することは望ましくありません。テーブル内のデータの追加または削除のみが必要です。表の追加および作成は、行の追加および削除よりも高いレベルの権限です。また、Webアプリケーションにテーブルの作成や削除の権限を持たせたくありません。これにより、データベース全体がハッカーによって削除またはコピーされることになります。他にも理由がありますが、それがセキュリティの理由です。 – araneae

+0

@aranesaあなたは権限レベルについて、ユーザーが他のテーブルにアクセスできる他の生のものにアクセスできる場合には、枯れてしまいます。そのアイデアは自分のテーブルにユーザーを置いておき、新しいテーブルを削除または作成する権限を与えないというものでした。どのようにハッカーの利得をDBに制御する彼は彼が望むことをやろうとします –

答えて

11

通常、ユーザーごとに個別のテーブルを作成することはありません。このソリューションは拡張性に優れていません。

代わりに、通常、すべてのユーザーのデータを1つのテーブル(またはデータの種類ごとに1つのテーブル)に入れ、WHERE句で条件を使用して、ユーザーが自分のデータを読み書きできるようにします。

0

確かに良いアイデアではありません。あなたがすべきことは、それらのほとんどまたはすべてがあなたのためにこれを提供しているので、いくつかのWebアプリケーションフレームワークに精通していることです。良い選択は、例えばDjangoです。

+0

そのようなものはそれから学習を取ります.....私はmysqlとpythonで完全に書かれた私のアプリケーションのサーバーのDjangoを使用することができないので私はここにいますデータベースを設計するうまい方法を見つけ出す必要があります。 – nsij22

4

あなたのアプリが非常に慣れていない限り、あなたは動作するウェブアプリケーションフレームワークを選択したいと思うでしょう。単純なことについては、最も一般的なフレームワークはまったく同じように機能します(ただし、猛烈な意見の不一致があります)。私は、あなたが最も強く感じているプログラミング言語を持っていると仮定します。そうすれば、それをWebフレームワークの主なガイドにすることをお勧めします。

  • ルビー:Ruby on Rails
  • のPython:言語によっていくつかの一般的なフレームワークは、(これは完全なリストにさえ近いではありません)ですDjango
  • のJava:Spring

についてはスキーマに関するご質問は、database normalizationをご覧ください。ほとんどのフレームワークには、ユーザーの作成と認証に対応するツールがすでに用意されていますが、一般的にユーザーごとにテーブルを作成することは決してありません。より一般的なアプローチは、ユーザと呼ばれるテーブルを持つことです。テーブルは、idをプライマリ・キーとして持ち、それを他のデータを参照する外部キーとして使用します。

関連する問題