2017-06-19 7 views
-2
|-------------------------| 
| column_table   | 
|-------------------------| 
| column_id | column_name | 
|-----------|-------------| 
| 1   | column_1 | 
|-----------|-------------| 
| 2   | column_2 | 
|-------------------------| 



|-------------------| 
| row_table   | 
|-------------------| 
| row_id | row_name | 
|--------|----------| 
| 1  | row_1 | 
|--------|----------| 
| 2  | row_2 | 
|-------------------| 



|--------------------------------------------| 
| value_table        | 
|--------------------------------------------| 
| value_id | column_id | row_id | value_name | 
|----------|---------------------------------| 
| 1  | 1   | 1  | value_11 | 
|----------|---------------------------------| 
| 2  | 2   | 1  | value_21 | 
|--------------------------------------------| 
| 3  | 1   | 2  | value_12 | 
|--------------------------------------------| 
| 4  | 2   | 2  | value_22 | 
|--------------------------------------------| 

いいえ、結果の表に行と列を追加できるようにデータベースを設計する方法を教えてください。以下の表のように、結果表を作成してください(明らかに一時表を使用しています)。MySQLのカラム変数テーブル

次の表を持っていると仮定すると
|-----------------------------| 
| result_table    | 
|-----------------------------| 
|  | column_1 | column_2 | 
|-------|---------------------| 
| row_1 | value_11 | value_21 | 
|-------|---------------------| 
| row_2 | value_12 | value_22 | 
|-----------------------------| 
+0

あなたが達成しようとしていることは本当に明確ではありません。 メタテーブル構造を構築しているので、ユーザーはWebアプリケーションで独自のテーブル構造を設計できますか? もしそうなら、上で概説したテーブル構造より簡単な方法があります。 あなたの目標についての詳細をお知らせください。 –

+0

ユーザーはテーブルに行と列を追加できる必要があります。つまり、テーブルが行と列(縦方向と横方向)に展開できるようにしてください。 – Alaksander

答えて

0

|-------------------------| 
| column_table   | 
|-------------------------| 
| column_id | column_name | 
|-----------|-------------| 
| 1   | column_1 | 
|-----------|-------------| 
| 2   | column_2 | 
|-------------------------| 



|-------------------| 
| row_table   | 
|-------------------| 
| row_id | row_name | 
|--------|----------| 
| 1  | row_1 | 
|--------|----------| 
| 2  | row_2 | 
|-------------------| 

あなただけにして、各「仮想」テーブルセルの値を保存するために、次のようなテーブルが必要になります。

|-----------------------------------------| 
| value_table        | 
|-----------------------------------------| 
| value_id | row_id | column_id | value | 
|-----------------------------------------| 
|  1 | 1 |  1  | 'Y' | 
|  2 | 1 |  2  | 915 | 
|  3 | 2 |  1  | 'N' | 
|  4 | 2 |  1  | 883 | 
|-----------------------------------------| 

その後次のようなクエリを発行して結果を表示することができます。

select 
     value_id 
     , row_name 
     , column_name 
     , value 
    from 
     value_table v join 

     column_table c on 
      v.columnd_id = c.column_id  join 

     row_table r on 
      v.row_id = r.row_id 

    where 
     {{ some conditions }}; 
+0

はい、これは良い例です各行には複数のフィールドがあり、前の行の値を保存する必要がある場合は、少なくとも1つのセルが変更された場合は、行全体を複製する必要があります。情報は1つのセル – Alaksander