クライアントがテーブル構造を変更できるようにするには、いくつかの課題があります。新しいフィールドを追加または削除するために構造を変更したい場合はどうなりますか?検証コードをどのように追加しますか?より複雑なセキュリティの懸念だけでなく...
は、オブジェクト指向のデータベースはこれを実装するのに適していますが、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 .....
これは、ユーザーが特定のモジュールのカスタムフィールドを追加/削除できるカスタムフィールドを意味します。 'vtiger crm、sugar crm'などのPHPとMySQLで書かれたオープンソースのcrmアプリがたくさんあります。私は' sqcrm.com'を使っています。もっと詳しく調べることができます。 –
@AbhikChakrabortyご意見ありがとうございますが、私は何か違うものを試していますので、最初から作りたいと思っています。 –
クエリはどのように見えますか? –