0

自分のスキル (PHP、HTML、CSS、JavaScript など) を練習するためのソーシャル ネットワークを作成しているだけです。データベースのレイアウトを設計しているときに、残念ながら解決できない質問が表示されます。

UserMainというテーブルがあります。

+------------+---------------------+
| Field      | Type                |
+------------+---------------------+
| u_id       | bigint(20) unsigned |
| u_email    | varchar(256)        |
| u_password | varchar(30)         |
| u_data     | varchar(25)         |
| u_friends  | varchar(28)         |
+------------+---------------------+

登録時に入力する一般的なデータを格納するため。

ユーザーのデータ (名、姓、性別、誕生日など) をdataと呼ばれる別のテーブルに分割し、もちろんfriendsと呼ばれるテーブル内のユーザー間の関係を分離したいと考えました。そこで、上記の u_id を使用して php を介して、すべてのユーザーのデータおよびフレンド テーブルを作成することにし、[u_id]_dataのようなものを思いつきました。

+------------+---------------------+
| Field      | Type                |
+------------+---------------------+
| u_prename  | varchar(20)         |
| u_surname  | varchar(20)         |
| u_sex      | boolean             |
| u_birthday | DATE                |
| u_avatar   | varchar(28)         |
+------------+---------------------+

問題は明らかに [u_id]_data テーブルから始まるため、今は friends テーブルに値を付けたくありません。ユーザーは姓名などを 1 つだけ持っているため、1 行テーブルです。今質問:

主キーに関連してテーブルの入力を処理するにはどうすればよいですか?

私にとって、新しい「id int not null auto_increment pk」を作成することは、単一の行には必要ないように思われるため、主キーに使用する列の組み合わせがわかりません。

この設計のより良い実装を知っているかもしれませんが、次の点を考慮してください。

あなたがどんな新しい実装を持っているかは問題ではありません。私が持ちたくない唯一のものはdata、すべてのユーザーのデータを持っていると呼ばれるテーブルです。

わかりました、私は MySQL について悪い意見を持っているか、あまり情報がありませんが、複数のデータ テーブルを持つという私の考えは、パフォーマンス上の理由から来ています。

データを変更または挿入するときの私の考え:

  1. GetTheUsersId (User-Table で ID を検索しています。10,000,000 ユーザーとしましょう)
  2. [u_id] があれば、データ テーブルを使用して探しているものを見つけることができます。

(再び) 10,000,000 行で構成されるテーブルでは、時間がかかります。抽象化と次元を遠く離れたレベルにまで引き上げているので、笑わないでください。パフォーマンスを節約するという考えをサポートするためだけです。

4

1 に答える 1