2016-05-12 6 views
0

私はデータベース構造が新しくなっています。そして、私は自分のWebアプリケーションの通知システムを構築する必要があります。グーグルでしばらく後に私はthe first answerが面白い見つける。TINYINTはどのようにMySQLに文字列値を格納できますか

なぜactivity_typeがTINYINTですか?彼は例の価値が「お気に入りに追加された」のようだと言っているので、それは文字列であるとは思わないでしょうか?誰でも助けることができますか?

答えて

0

はい、その例に従わないでください。

TINYINTには、魔法の意味を持ち、定数としてコードで表現されている可能性が高い数字が使用されています.1はアクティビティの1種類、2は他のものなどを意味し、コードだけがその意味を知っています。データベース。

次に、いくつかの他のテーブルの1つを参照する、宣言されていない非強制の外部キーを参照する "source_id"があります。これをしないでください。

データベース列内では、すべての値が同じ意味を持つ必要があります。すべて同じ情報ドメインからのものである必要があります。 "thing_id"列がある場合は、常にthingテーブルの行の "id"を参照する必要があります。 ではなくは、「thing_type」が「1」または「2」に設定されているかどうかによって、「thing1」テーブルの行を時々参照するか、「thing2」テーブルの行を参照することがあります。

このような設計には実用的なユースケースがありますが、このモデルは参照整合性の施行のないデータベースの赤旗警告として解釈されます。これはリレーショナルデータベースのベストプラクティスとは一致しません。彼の最後のコメントから

注...

ありませんが加入します。

彼は実際にリレーショナルデータベースをリレーショナルデータベースとして使用していません。彼はそれをキー/バリューストアの一種としてほぼ使用しています。

+0

わかりました。まあ、私はあなたが意味するものを得ました。だから改善のための任意の提案? –

関連する問題