0

user_portsユーザーがデータベースで開いたすべてのポートを含むという名前のテーブルを作成したいと思います。

各列を「port_80」、「port_100」と呼ぶ代わりに

配列として呼び出される列に入力できるかどうか疑問に思っていましたopened_ports

しかし、ポート 80 を開いた状態ですべてのユーザーを取得したい場合は、どうすればよいでしょうか?

4

1 に答える 1

1

私が理解できる限り、user_ports テーブルに 2 つの列が必要です。適切なユーザーを参照する user_id と、開いている特定のポートを記述する open_port です。次に、(user_id、opened_port) ペアを主キーとして宣言する必要があります。このようなテーブル構造を使用すると、次のクエリで 80 ポートを開いたユーザーの ID を選択できます。

SELECT user_id FROM user_ports WHERE opened_port = 80;

ユーザーが開いたすべてのポートを CSV として単一のレコードに保存できますが、これは次のようになります。

  1. そのようなトリックに対処する追加のコードが必要です。
  2. データベース クエリが複雑になり、速度が低下します。
  3. データベースを非正規化します (これは避けるべきです)。
于 2013-01-07T12:14:56.880 に答える