0

テーブル内のユーザーに関する情報を保持するデータベースを構築したいと思います。

User
 -username (primary key)
 -first_name
 -second_name
 -Image

このデータベースには、次のような別のテーブルがあります。

Image
 -name (primary key)
 -file_name

達成したいこと

各ユーザーに、フィールドの1つとして画像を設定してもらいたい。これを行うには、テーブルを接続する必要があることを理解しています。

私が今まで知っていること

まず、テーブルをInnoDBとして定義し、次にphpmyadminを使用してrelationViewをクリックする必要があります。

質問

phpmyadminを使用して上記の関係を実現するにはどうすればよいですか?

4

2 に答える 2

0

ユーザーが1つの画像しかない場合、それは1対1の関係です。すべてが1つのテーブルで実行できます。

このようなもの:

CREATE TABLE users (
  userId INT UNSIGNED NOT NULL AUTO_INCREMENT,
  userFirstName VARCHAR(80) NOT NULL,
  userSecondName VARCHAR(80),
  imageName VARCHAR(100) NOT NULL,
  PRIMARY KEY (userId)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

複数の画像は1人のユーザーに必要であり、1対多の関係があります。したがって、2つのテーブルと1つのルックアップテーブルを作成できます。

このような:

CREATE TABLE users (
   userId INT UNSIGNED NOT NULL AUTO_INCREMENT,
   userFirstName VARCHAR(80) NOT NULL,
   userSecondName VARCHAR(80),
   imageName VARCHAR(100) NOT NULL,
   PRIMARY KEY (userId)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE images (
   imageId INT UNSIGNED NOT NULL AUTO_INCREMENT,
   imageName VARCHAR(100) NOT NULL,
   PRIMARY KEY (imageId)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ルックアップテーブル:

CREATE TABLE user_image ( 
   userId INT UNSIGNED,
   imageId INT UNSIGNED
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
于 2013-03-09T16:28:47.457 に答える
0

Imageテーブル上で参照される列をテーブルに配置する必要がありUserます。たとえば、ユーザーが複数の画像を持つことができる場合です。元、

ユーザー

  • ユーザー名(主キー
  • ファーストネーム
  • ミドルネーム

画像

  • 名前(主キー
  • ファイル名
  • userName(外部キー

DDLに変換:

CREATE TABLE `User`
(
    userName VARCHAR(15),
    first_name VARCHAR(15),
    second_name VARCHAR(15),
    CONSTRAINT tb_pk PRIMARY KEY (userName),
    CONSTRAINT tb_uq UNIQUE (first_name, last_name)
);

CREATE TABLE `Image`
(
    name VARCHAR(15),
    file_name VARCHAR(75),
    userName VARCHAR(15)
    CONSTRAINT tb_pk PRIMARY KEY (name),
    CONSTRAINT tb_fk FOREIGN KEY (userName) REFERENCES `User`(userName)
);
于 2013-03-09T16:12:17.323 に答える