私はデータベース構造が新しくなっています。そして、私は自分のWebアプリケーションの通知システムを構築する必要があります。グーグルでしばらく後に私はthe first answerが面白い見つける。TINYINTはどのようにMySQLに文字列値を格納できますか
なぜactivity_typeがTINYINTですか?彼は例の価値が「お気に入りに追加された」のようだと言っているので、それは文字列であるとは思わないでしょうか?誰でも助けることができますか?
私はデータベース構造が新しくなっています。そして、私は自分のWebアプリケーションの通知システムを構築する必要があります。グーグルでしばらく後に私はthe first answerが面白い見つける。TINYINTはどのようにMySQLに文字列値を格納できますか
なぜactivity_typeがTINYINTですか?彼は例の価値が「お気に入りに追加された」のようだと言っているので、それは文字列であるとは思わないでしょうか?誰でも助けることができますか?
はい、その例に従わないでください。
TINYINT
には、魔法の意味を持ち、定数としてコードで表現されている可能性が高い数字が使用されています.1はアクティビティの1種類、2は他のものなどを意味し、コードだけがその意味を知っています。データベース。
次に、いくつかの他のテーブルの1つを参照する、宣言されていない非強制の外部キーを参照する "source_id"があります。これをしないでください。
データベース列内では、すべての値が同じ意味を持つ必要があります。すべて同じ情報ドメインからのものである必要があります。 "thing_id"列がある場合は、常にthingテーブルの行の "id"を参照する必要があります。 ではなくは、「thing_type」が「1」または「2」に設定されているかどうかによって、「thing1」テーブルの行を時々参照するか、「thing2」テーブルの行を参照することがあります。
このような設計には実用的なユースケースがありますが、このモデルは参照整合性の施行のないデータベースの赤旗警告として解釈されます。これはリレーショナルデータベースのベストプラクティスとは一致しません。彼の最後のコメントから
注...
ありませんが加入します。
彼は実際にリレーショナルデータベースをリレーショナルデータベースとして使用していません。彼はそれをキー/バリューストアの一種としてほぼ使用しています。
わかりました。まあ、私はあなたが意味するものを得ました。だから改善のための任意の提案? –