2016-05-30 21 views
0

私はPHP &に基づいて小さなCRMアプリケーションを開発中です。私はSaaSアーキテクチャに従っています。シングルコードベースとすべてのクライアントは独自のデータベースを持っています。CRMアプリケーションのデータベーステーブル構造

  • すべての連絡先情報は、CSVからインポートする必要があります。

  • 私の目的は、クライアントがコンタクトテーブルの構造を変更できるようにすることです。つまり、各クライアントは独自のテーブル構造を定義できます。

例:

  • 写真業界からのクライアントは、次のように顧客情報を収集したい:

    名前、住所、市、州、国、電話番号、電子メール、whatsapp

  • SEO業界のクライアント、次のように顧客情報を収集するためのIKE:

    名、姓、住所、市、州、国、電話番号、電子メール、 ウェブサイト、スカイプ

されるものすべてのニーズに対応する最適なテーブル構造。

私は自分の質問をはっきりと説明してくれることを願っています。私の質問を理解するのが難しい場合はコメントしてください。

+0

これは、ユーザーが特定のモジュールのカスタムフィールドを追加/削除できるカスタムフィールドを意味します。 'vtiger crm、sugar crm'などのPHPとMySQLで書かれたオープンソースのcrmアプリがたくさんあります。私は' sqcrm.com'を使っています。もっと詳しく調べることができます。 –

+0

@AbhikChakrabortyご意見ありがとうございますが、私は何か違うものを試していますので、最初から作りたいと思っています。 –

+0

クエリはどのように見えますか? –

答えて

1

クライアントがテーブル構造を変更できるようにするには、いくつかの課題があります。新しいフィールドを追加または削除するために構造を変更したい場合はどうなりますか?検証コードをどのように追加しますか?より複雑なセキュリティの懸念だけでなく...

は、オブジェクト指向のデータベースはこれを実装するのに適していますが、MySQLが要件であることを示しているため、アーキテクチャの観点からアプローチする方法の1つは顧客キーが動的に変更可能な特定のテーブルスキーマにマッピングされる、顧客固有のスキーマのテーブルを有すること。

フォームメタデータと関連するテーブル操作をデータベースに格納して、入力フィールドを動的に生成することができます。テーブルスキーマはまれに再生成される必要があるため、これはあまり追加のオーバーヘッドではありません。スキーマを表現するためにXMLを使用した

は、私は一度保存された スキーマに基づいてSQLコードとHTMLフォームを生成した機能を実装することにより、このような何かを実装しました。フィールドが追加または変更されたとき、アプリケーションはXSLTを介してテーブルを変更するために新しいXMLおよび関連するSQLを生成しました。

E.G.

Schema  DBtoSchema(Database) 
DataBase  SchematoDB(XML_Schema) 
Schema  DBTabletoSchema(Table) 
DBTable  SchemaToDBTable(XML_Schema) 
SuccessCode SchemaAddField(XML_Schema, FieldName, FieldType, FieldValidation) 
SuccessCode SchemaDeleteField(XML_Schema, FieldName) 
SuccessCode NewTable(Schema) 
SQLCode  GenerateInsertSQL(Schema) 
SQLCode  GenerateDeleteSQL(Schema) 
HTMLCode  GenerateForm(Schema, xsltCode) 
... and so on ..... 
+0

J Carl Zeiglerありがとうございました。あなたの説明はとても良いです。私はより多くの情報を追加して質問を更新するつもりです。すべてのクライアントには独自のデータベースがあります。 –

関連する問題