0

2つのテーブルがあります。

User_types

  • (1)個人
  • (2)ビジネス
  • (3)学生

Relationship_cat

  • cat_id
  • cat_name
  • ユーザーID
  • ユーザータイプ

まずRelationship_cat、エントリを次のようにします

cat_id(1), cat_name(interests) ,user_id(ANy user), user_type(only 1 and 3)
cat_id(2), cat_name(news) ,user_id(ANy user), user_type(only 2 and 3)
etc

user_type私はそれをデフォルトとして0に設定できると信じているので、どのユーザーにも制約されません。どうすれば"relationship_cat > user_type"事件に対処できますか?カンマ区切りの値のリストを使用しますか?効率的ですか?User_typesそして、エントリが多い場合はどうなりますか?

4

2 に答える 2

3

多対多の結合テーブルを使用する必要があります。したがって、スキーマは次のようになります。

user_types

  • user_type_id
  • user_type_value

カテゴリ

  • cat_id
  • cat_name

カテゴリ_to_user_types

  • cat_id
  • user_type_id

あなたが言及したようにコンマで区切られた値を使用することを考えるときはいつでも、これはあなたのテーブルをさらに正規化するためのあなたへのサインであるべきです。私が示したのは、通常、テーブル間の多対多の関係を表現するための最良の方法です。

于 2013-01-19T00:35:23.497 に答える
1

1つの列に複数の値を格納する必要がある場合は、代わりに別のテーブルを導入して、それらの関係を1対多の関係として格納することをお勧めします。これをRelationship_cat_user_typeと呼び、cat-Idとuser_type_idの値をそのテーブルに保存します。これは正規化に最適です。

幸運を。

于 2013-01-19T00:37:24.867 に答える