私は自分のシステムの特定の機能の設計を理解しようとしています(これはクラウドベースのサービスの一部です)
基本的に、ユーザーがシステムと統合された単純なCRMエントリ/取得システム用の独自の疑似「テーブル」を作成できるようにしたいと思います。
だから私は私が助けを必要としている2つの質問があります
データをどのように保存するのか疑問に思っています。2つのレイアウトを考えました。
- たとえば、テキスト、整数、または 倍精度のいずれかを格納する3つのテーブルを作成します
cms_item_text-
[id, heaqderID, data (text)]
cms_item_int-
[id, headerID, data (int)]
cms_item_double-
[id, headerID, data (double)]
- またはcms_item-
[id, headerID, data (text)]
そして私は(MySQLのcast()関数を使用して、orderを実行するときにテキストからinteger / doubleに変換します(例order by cast(data as signed integer)
))
現在、データの取得は別の話です。それはしばしばテーブルビューにあるので、それから読むための最良の方法は何ですか?私はそれをこのように考えました-
SELECT barcode.data as barcode, price.data as price, notes.data as notes FROM cms_item barcode, cms_item price, cms_item notes WHERE (barcode.headerID = 1 and barcode.id = 1) and (price.id = 1 and price.headerID = 2) and (notes.id = 1 and notes.headerID = 3)
次のような結果が得られるように
array("barcode" => "eg", "price" => "123", "notes" => "hello there")
array("barcode" => "no2", "price" => "456", "notes" => "yes")
取るべき最良の設計パスは何ですか?