1

私は、php、mysql、およびjavascriptを使用して、母のための半単純なWebアプリケーションを作成しています。

彼女は教師であり、これにより彼女は授業計画のさまざまな要素を管理することができます。各コンポーネントにはテーブルがあり、別のコンポーネントを含むことができる各コンポーネントには、関係を保持する別のテーブルがあります。(そのテーブルタイプには2つの列があり、それぞれに関連するテーブルへの外部キーがあります)

私はほぼ完了しましたが、彼女は友達にこれを使用させたいと思っています。SQLインジェクションについてはあまり気にしませんが、コンポーネントを作成するユーザーだけがそのコンポーネントを表示および編集できるようにユーザーコントロールを実装したいと思います。 。

また、ユーザーがコンポーネントを自分のデータセットにコピーできるように、パブリックコンポーネントを作成できるようにしたいと思います。

私の質問ユーザーコントロールを実装するには、各ユーザーに独自のデータベースインスタントを持たせるか、各テーブルにパブリック/プライベートステータスの所有者列と列を持たせるか、または私が考えていなかった別の選択肢がありますか。

私が見ている問題は、両方のコンポーネントのユーザータグが現在のユーザーと一致することを確認する必要があるため、コンポーネント間の関係を作成するときに追加のmysqlクエリが必要になることです。

フィードバック/提案は役に立ちます

更新これを使用/アクセスするのは他の教師だけで、独自のレッスンプランを作成します

4

1 に答える 1

0

私は確かにこれを同じデータベース内に実装します。この場合、ユーザーごとに異なるデータベースを使用することは適切なソリューションではありません。たとえば、各ユーザーのデータが別々のデータベースにある場合に検索関数を構築すると、UIDが衝突することを考えてみてください。それは悪夢でしょう。個別のデータベースは、各データベースが個別のアプリケーションを提供し、異なるデータベースのデータ間にはまったく関係がない場合に機能します。

これで、実装方法がわかります。これはモデルによって異なります。各レッスンプランには、たとえば、所有者が1人だけになるのでしょうか。その場合、その情報をコンポーネントテーブルに追加すると機能する可能性があります。または、所有権を定義してさまざまなコンポーネントへのアクセスを定義するために、別のテーブルが必要になる場合があります。いずれにせよ、アクセスロジックが分離され、アプリケーションにカプセル化されていることを確認して、将来変更できるようにします。たとえば、単純な単一所有者モデルから始めたが、サイトが成長し、すぐに人々のグループ全員がコンポーネントへの所有権/編集アクセスを必要とする場合を想像してみてください。

于 2012-04-15T13:07:35.700 に答える