1

会社のクライアントを管理する Web アプリケーションに取り組んでいます。電話、住所、電子メール、名前などの詳細はクライアントごとに保存され、これらの詳細を保存するデータベース テーブルには対応するフィールドがあります。

アプリケーションのユーザーは、さまざまな詳細を変更できる必要があります。たとえば、クライアントのファックス番号を保存するために追加のフィールドが必要であると判断したり、住所フィールドが不要になったと判断して削除したりすることがあります。

NoSql の使用はオプションではありません。PHP と mySql を使用する必要があります。

JSON 文字列を使用してデータベース テーブル フィールドを保存することを検討していますが、まだ解決策が思い浮かびません。

問題の唯一の解決策は、db テーブルの構造を変更することですか? 可能であれば、db テーブルの構造を動的に変更しないようにしたいと考えています。

動的ビューを実装することは考えられるでしょうか? ただし、これは新しいフィールドを挿入する必要性に対応していないと思います。

前もって感謝します。

4

2 に答える 2

1

MySQL のキーと値のペア システムが必要です。NoSQL データベースの考え方は、基本的に値に何でも使用して、キー/値に基づいて独自のスキーマを作成できるということです。

列を持つテーブル、またはフィールド名により具体的な名前を付けたテーブルspecial_fieldsを作成します。field_nameこのテーブルを使用して、使用可能なフィールド名を定義し、別のテーブルを使用して、値を格納しclient_idますspecial_field_id

したがって、クライアント #1 の住所 (special_field レコード #1) の値は「123 x street」になります。

私が考えることができる他の唯一の方法は、実際にテーブルのスキーマを変更して列を追加/削除することです。そうしないでください。

于 2013-11-09T07:44:55.273 に答える
1

外部キーとして user_id を持つ「情報」と呼ぶことにしましょう。

だからあなたは持っています:

CREATE TABLE user (
user_id ...
/* necessary information */
);

CREATE TABLE information (
user_id ...
information_type /* maybe enum, maybe just string, maybe int, depending how you want to do that */
information_blob
);

次に、JOIN を使用して情報を取得します。誰かが別の情報を追加するたびにテーブルを変更する必要はありません。

于 2013-11-09T07:45:42.253 に答える