複数のデータ格納と取得の最良の方法は何ですか? -- php フィールド と mysql フィールド と sql フィールド 関連 問題

What is the Best method for multiple Data Storing and Fetching?












0
vote

問題

日本語

各<コード> owner には、誰かがそれを訪問するときに、<コード> SecretCodes が表示されている場合は、自分のページを持っています。 <事前> <コード> OwnersSeats [id - ownderid - type - Seat1 - SecretCode2 -> Seat50 - SecretCode50 ] [1 - 3 - Premium - Mark - v2ttvgwrxt5cg36g3c63g36c3c54c26y4e73c6 -> Max - c4wghwh65qcg45g5qx3 ] [2 - 3 - Standard - Jerry - 36vyh36cyh6y6wc363v636vc3yc6y3v7y37 -> Marco - h7wv5cg6qg6qcgqx3xgf5qwy4h] [3 - 7 - Enterprise - Sonia - c3m73uhyv73vyhu3h33c65g33c7v373v73v7 -> John - 5ctev5hmkbjev7h7kje ]

<コード> Seat* VARCHAR(24), SecretCode* TEXT <コード> Can be VARCHAR(512) instead.

その後、このクエリを使用してそれらを選択します

<コード> SELECT ownderid, type, Seat1, SecreCode2 -> 50 FROM seats WHERE ownerid = :ownerid

これを処理するための最良の方法は何が効率的で、よく実行され、使いやすく編集が簡単ですか?

この

のように、テーブル内のすべての座席を TEXT として保存することを考えました。 <事前> <コード> $SS = [ s1 => 'Mark', sc1 => 'v2ttvgwrxt5cg36g3c63g36c3c54c26y4e73c6', s2 => '~~', sc2 => '~~~~~~~', s3 => '~~', sc3 => '~~~~~~~', s4 => '~~', sc4 => '~~~~~~~', -> 50 ];

しかし、私はそれがパフォーマンスの良いか悪いかどうかわかりません。

limit Seats0 にしたいので、 Seats1 <コード> Seats2 <コード> 998876613 Seats4 を使用してこれを処理しますか?

私はそれがすべての SELECT ownderid, type, Seat1, SecreCode2 -> 50 FROM seats WHERE ownerid = :ownerid16 データですべての Seats5 を一列に置くことがより良いと思いました。速い。

また、 Seats9 を使用せずに 998877618 からすべての Seats7 をすべて取得してすべての退学データを取得できます。 <コード> SecretCodes0 を使用しているので、どちらが使われるパフォーマンスのためよりも優れているのだろうか。

<事前> <コード> SecretCodes1

英語

The following table each owner has his own page, When someone visits it, All the Seats with SecretCodes appears

OwnersSeats [id    -  ownderid -  type        -  Seat1  -  SecretCode2                            -> Seat50  - SecretCode50              ] [1     -  3        -  Premium     -  Mark   -  v2ttvgwrxt5cg36g3c63g36c3c54c26y4e73c6 -> Max     - c4wghwh65qcg45g5qx3       ] [2     -  3        -  Standard    -  Jerry  -  36vyh36cyh6y6wc363v636vc3yc6y3v7y37    -> Marco   - h7wv5cg6qg6qcgqx3xgf5qwy4h] [3     -  7        -  Enterprise  -  Sonia  -  c3m73uhyv73vyhu3h33c65g33c7v373v73v7   -> John    - 5ctev5hmkbjev7h7kje       ] 

With each Seat* VARCHAR(24), SecretCode* TEXT Can be VARCHAR(512) instead.

Then I select them using this Query

SELECT ownderid, type, Seat1, SecreCode2 -> 50 FROM seats WHERE ownerid = :ownerid

What is the best way to handle this to be Efficient, Well preformed and Easier to Use and Edit?

I thought about storing all the seats in array inside the table as a TEXT like this

$SS = [ s1 => 'Mark', sc1 => 'v2ttvgwrxt5cg36g3c63g36c3c54c26y4e73c6',  s2 => '~~', sc2 => '~~~~~~~', s3 => '~~', sc3 => '~~~~~~~', s4 => '~~', sc4 => '~~~~~~~', -> 50 ]; 

But i don't know if that Good or Bad for Performance.

I want to limit it to 50, So i have 100 column[SS] 50 Seats 50 SecretCode, Do I use normalization to handle this?

I thought it would be better to put all the SS in a Single row to be fetched all at once with all the ownerid data, Since i suppose it would be faster.

Also I don't know how can i fetch all the SS from a normalized table without using second query to fetch all the releated data from it or usingGROUP_CONCAT(), So I wonder which one is better for performance to be used.

[OSid - Seat  - SecretCode                            ] [1    - Mark  - v2ttvgwrxt5cg36g3c63g36c3c54c26y4e73c6] ~48                                                   ] [1    - Max   - c4wghwh65qcg45g5qx3                   ] [2    - Jerry - 36vyh36cyh6y6wc363v636vc3yc6y3v7y37   ] ~48                                                   ] [2    - Marco - h7wv5cg6qg6qcgqx3xgf5qwy4h            ] [3    - Sonia - c3m73uhyv73vyhu3h33c65g33c7v373v73v7  ] ~48                                                   ] [3    - John  - 5ctev5hmkbjev7h7kje                   ] 
</div
        
       
       

回答リスト

1
 
vote
vote
ベストアンサー
 

コメントはかなり制限されているので、コメントではなく答えを使用しています。私はあなたのテーブルを理解し始めると思います。だから私はこれらの列のみでテーブルを書き換えるでしょう:

<事前> <コード> id ownderId type seat secretCode

データは次のようになります。

<事前> <コード> [id - ownderId - type - seat - secretCode ] [1 - 3 - Premium - Mark - v2ttvgwrxt5cg36g3c63g36c3c54c26y4e73c6 ] [2 - 3 - Standard - Jerry - 36vyh36cyh6y6wc363v636vc3yc6y3v7y37 ] [3 - 7 - Enterprise - Sonia - c3m73uhyv73vyhu3h33c65g33c7v373v73v7 ] [4 - 3 - Premium - Max - c4wghwh65qcg45g5qx3 ] [5 - 3 - Standard - Marco - h7wv5cg6qg6qcgqx3xgf5qwy4h ] [6 - 7 - Enterprise - John - 5ctev5hmkbjev7h7kje ]

座席番号が重要な場合は、その番号の列を追加できます。このように:

<事前> <コード> [id - ownderId - type - seatNo - seat - secretCode ] [1 - 3 - Premium - 1 - Mark - v2ttvgwrxt5cg36g3c63g36c3c54c26y4e73c6 ] [2 - 3 - Standard - 1 - Jerry - 36vyh36cyh6y6wc363v636vc3yc6y3v7y37 ] [3 - 7 - Enterprise - 1 - Sonia - c3m73uhyv73vyhu3h33c65g33c7v373v73v7 ] [4 - 3 - Premium - 50 - Max - c4wghwh65qcg45g5qx3 ] [5 - 3 - Standard - 50 - Marco - h7wv5cg6qg6qcgqx3xgf5qwy4h ] [6 - 7 - Enterprise - 50 - John - 5ctev5hmkbjev7h7kje ]

表は正規化されました。同じ種類のデータが複数の列に存在しません。これはあなたのクエリをこのように見せるでしょう:

<事前> <コード> SELECT seatNo, seat, secreCode FROM seats WHERE ownerId = :ownerid

データに対する他の任意のクエリは類似しています。

 

I'm using an answer, not a comment, because a comment is quite restricted. I think I start to understand your table. So I would rewrite the table with only these columns:

id ownderId type seat   secretCode 

Data would look like this:

[id - ownderId - type       - seat   - secretCode                             ] [1  - 3        - Premium    - Mark   - v2ttvgwrxt5cg36g3c63g36c3c54c26y4e73c6 ] [2  - 3        - Standard   - Jerry  - 36vyh36cyh6y6wc363v636vc3yc6y3v7y37    ] [3  - 7        - Enterprise - Sonia  - c3m73uhyv73vyhu3h33c65g33c7v373v73v7   ] [4  - 3        - Premium    - Max    - c4wghwh65qcg45g5qx3                    ] [5  - 3        - Standard   - Marco  - h7wv5cg6qg6qcgqx3xgf5qwy4h             ] [6  - 7        - Enterprise - John   - 5ctev5hmkbjev7h7kje                    ] 

If seat numbers are important to you, you could add a column with that number in it. Like this:

[id - ownderId - type       - seatNo - seat   - secretCode                             ] [1  - 3        - Premium    - 1      - Mark   - v2ttvgwrxt5cg36g3c63g36c3c54c26y4e73c6 ] [2  - 3        - Standard   - 1      - Jerry  - 36vyh36cyh6y6wc363v636vc3yc6y3v7y37    ] [3  - 7        - Enterprise - 1      - Sonia  - c3m73uhyv73vyhu3h33c65g33c7v373v73v7   ] [4  - 3        - Premium    - 50     - Max    - c4wghwh65qcg45g5qx3                    ] [5  - 3        - Standard   - 50     - Marco  - h7wv5cg6qg6qcgqx3xgf5qwy4h             ] [6  - 7        - Enterprise - 50     - John   - 5ctev5hmkbjev7h7kje                    ] 

The table is now normalized. The same type of data is not present in multiple columns anymore. This would make your query look like this:

SELECT seatNo, seat, secreCode FROM seats WHERE ownerId = :ownerid 

Any other query on the data would be similar.

</div
 
 
       
       

関連する質問

65  C#/ vb.netでのT-SQLキャストをデコードする  ( Decoding t sql cast in c vb net ) 
最近、当社のサイトは、 asprox botnet SQL Injection 攻撃。詳細に入ることなく、攻撃は t-sql コマンドをエンコードすることによってSQLコードを実行しようとします。 ASCIIエンコードされたバイナリ文字列。それはこのような...

26  SQL全文索引付けが#を含む単語の結果を返すのはなぜですか?  ( Why doesnt sql full text indexing return results for words containing ) 
例えば、SQL Server 2005を使用して、次のようなマイクエリは次のようなものです。 <事前> <コード> SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') 使用時に結果を返す列Searc...

146  SQL Serverテーブルへの変更を確認してください。  ( Check for changes to an sql server table ) 
トリガを使用せずにテーブルへの変更のためにSQL Serverデータベースを監視する方法やデータベースの構造を変更する方法はありますか。私の優先プログラミング環境は、 .NET とc#。 私は SQL Server 2000 SP4以降をサポートできるように...

126  フラットファイルデータベース[閉じる]  ( Flat file databases ) 
閉鎖。この質問は意見ベースです。現在答えを受け付けていません。 この質問を改善したいですか?この記事を編集することで事実や引用を...

2520  データベースのインデックス作成はどのように機能しますか? [閉まっている]  ( How does database indexing work ) 
閉鎖。この質問はもっと焦点を絞ったにする必要があります。現在答えを受け付けていません。 この質問を改善したいですか?このPOST...

125  データベース構造の変更のバージョン管理システムはありますか?  ( Is there a version control system for database structure changes ) 
私はしばしば次の問題に遭遇します。 データベース内の新しいテーブルまたは列を必要とするプロジェクトにいくつかの変更を処理します。データベースの変更を加えて、仕事を続けます。通常、私はそれらがライブシステムで複製できるように変更を書き留めることを忘れないでくださ...

66  データベース列を索引付けする方法  ( How do i index a database column ) 
うまくいけば、私はデータベースサーバーごとに回答を受けることができます。 索引付けの仕組みの概要については、データベースの索引付けがどのように機能しますか? ...

50  CX_ORACLE:結果セットをどのように繰り返すのですか?  ( Cx oracle how do i iterate over a result set ) 
結果セットを繰り返す方法はいくつかあります。それぞれのトレードオフは何ですか? ...

62  データベース内の固有のインデックス付き列値をスワップします  ( Swap unique indexed column values in database ) 
データベーステーブルと、一方のフィールド(プライマリキーではありません)が一意のインデックスを持つことです。これで、この列の下に2行の値を交換します。これはどうやって行うことができますか?私が知っている2つのハック: 行の両方を削除してそれらを再挿入します。...

43  ASP.NETサイトマップ  ( Asp net site maps ) 
誰もがSQLベースのASP.NETサイトマッププロバイダを作成する経験がありますか? 私は私のメニューとSiteMappathコントロールと正しく機能しているデフォルトのXMLファイル web.sitemap を持っていますが、私のサイトのユーザーが動的にペー...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有