1

これで、users テーブルができました。ユーザー名、電子メールなどを保存します。次に、user_settings テーブルがあります。timestamp_logged_in、profile_views などの標準的な列の代わりに、キーと値の組み合わせとして整理しました。たとえば、列は次のとおりです。

user_settings_ID user_ID 名前 値

サンプル レコードは次のようになります: 82 2 'timestamp_logged_in' '2009-10-10 02:23:53'

これにより、設定がもう少し透過的になります。新しいユーザー設定の種類を格納するために列が存在する必要はありません。これを行うと (すべての値が文字列として格納され、ミドルウェアで適切な型にキャストされます)、並べ替えが難しくなることが懸念されます。たとえば、最後にログインした順にユーザーのリストを取得したい場合、並べ替えには次のような SQL 呼び出しが必要になります。

SELECT user_ID FROM user.settings WHERE status='open' AND name='timestamp_logged_in' ORDER BY name

ただし、これは見つかったレコードを文字列としてソートすることになります。並べ替えアルゴリズム mysql が特定の値の型に基づいて実装されていることを確認する方法はありますか (たとえば、並べ替え列を文字列、整数、日時、タイムスタンプなどとして強制的に処理するようにするなど)?

どんな考えでも本当に感謝します。ありがとう。オリバー・ナサール

4

2 に答える 2

3

正しいデータ型に手動でキャストする必要があります。

テーブルが大きくなることが予想される場合、このようにキーと値のペアとして保存すると、最初は良いアイデアのように思えますが、有用なインデックスを作成できないため、常にパフォーマンスが非常に悪くなります。後で変更するのではなく、今考えてください。

于 2009-11-28T03:50:10.423 に答える
0

「ソート可能な」文字列表現でデータを保存しないのはなぜですか..「ソート可能な形式への事前キャスト」

「11-28-2009 11:45」の代わりに、「2009.11.28 11:45」として保存できます

MySQL には、「ミドルウェア」で「datetime」または「date」に型キャストするために必要な関数があります。

于 2009-11-28T05:04:23.427 に答える