1

私の質問は、mysql データベースを使用する php Web サイトに関するものです。

現在、データベースには「トークン」エンティティがあります

トークンは 0 個以上の「オブジェクト」エンティティを保持でき、これらの各オブジェクトは x、y、z 型にすることができます

それで

----------
| Token  |
|--------|

--------------
|token_object|
|            |
|tokenID     |
|objectID    |
--------------

------------
| object   |
|          |
|objectType|
------------

------------  --------- ---------
| objectX  |  |objectY| |objectZ|
|          |  |       | |       |
------------  --------- ---------

オブジェクトからデータを取得したい場合、キャッシュ システムの性質上、ほとんどの場合一度に 1 つのオブジェクトである場合、オブジェクトと objectX/Y/ からデータを取得するために 2 つのクエリを作成するだけでよいため、これで問題なく動作します。 Z

(SELECT * FROM object WHERE id = $id) 

switch($objectType)
case 'objectX':
    SELECT * from ObjectX WHERE id = $id
case 'objectY':
etc etc..

しかし今、私は Web サイトのユーザーが新しいオブジェクト タイプ、つまり objectA/B などを作成できるようにするよう求められました。

新しいオブジェクト タイプごとに新しい objectXn テーブルを作成し、objectType に適切な値を選択するだけで済みます。

(SELECT * FROM $objectType WHERE blabla)

しかし、それは非常にきれいな解決策ではないようです。特に新しいテーブルの作成です

より良い解決策はありますか?

注目に値するのは、トークンに関連する多くのオブジェクトがあり、追加のオブジェクト タイプの作成はあまり発生しないか、ほとんど発生しないことです。

4

1 に答える 1

1

いったい何を保管しているのでしょうか?それに対して複雑なクエリが必要ですか、それとも ID による単純なオブジェクト ストレージが必要ですか? 後者の場合、ID、タイプ、およびデータを持つテーブルを作成できます。データは、コードで復元できるシリアル化されたオブジェクトです (たとえば、オブジェクトを JSON として保存し、保存されたデータで逆シリアル化します)。タイプとデータ)。これがニーズを満たさない場合は、質問のコンテキストをもう少し詳しく説明してください。

于 2012-08-03T17:20:42.540 に答える