0

phpmyadminusersに以下のフィールドを含むテーブルが1つあります。

users

uid | 名前| 連絡先番号

1人のユーザーに対して複数の連絡先番号が存在する場合があります。
これを解決する1つの方法は、連絡先番号にもう1つのテーブルを使用し、その主キーをusersテーブルに渡すことです。
これ以外の方法はありますか?contact.noフィールド に配列構造を実装できますか?

4

2 に答える 2

3

そこにコンマを置いて複数の数値を保存することもできますが、そうすると、RDMSとの概念全体が失われますNormalization。それは良いデータベース設計ではありません。したがって、テーブルを正規化し、そのような複数の情報を1つのフィールドに格納しないことをお勧めします。テーブルがもう1つあれば、データベースは実際にはストレスを感じません。

非常によく書かれた説明は、MicrosoftのWebサイトにあります。

于 2013-03-13T06:59:10.353 に答える
1

エントリのタイプごとに複数のテーブルを作成する必要はなく、より堅牢なテーブル構造を作成するだけです。正規化する必要のある情報が一貫した形式であることを確認してください。

ユーザー: uid | 名前| ユーザー名

1,Bob,bcratchet

情報: iid | itype | icontent | uid

1,cell,000.000.0000
2,home,000.000.0000    
3,home_addr,1234 Anystreet, anytown USA
4,work_addr,4567 Anystreet, anytown USA

select * from Users u、Info i where u.uid = i.uid and name = "Bob";

どのアプリケーションでもそれを多次元配列にプルすれば、準備は完了です。

編集* 理想的には、さらに進んでitypesのようなテーブルを表示し、次のようにタイプをさらに正規化します。

itypes: itype_id | 私はタイプする

1,cell
2,home
3,home_addr
4,work_addr

次に、Infoテーブルでは、「itype」ではなく「itype_id」と表示されます。

于 2013-03-13T08:51:15.970 に答える