0

我想建立一个数据库,在表中保存有关用户的信息:

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

在这个数据库中将有另一个表,如下所示:

Image
 -name (primary key)
 -file_name

我想要达到的目标

我希望每个用户都将 Image 作为其字段之一。我知道要做到这一点,我必须连接表格。

到目前为止我所知道的

首先,我应该将表定义为 InnoDB,然后使用 phpmyadmin 单击关系视图。

问题

如何使用 phpmyadmin 实现我上面描述的关系?

4

2 回答 2

0

如果用户只有一张图像,则它是一对一的关系。一张桌子可以做任何事情。

像这样的东西:

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 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

您应该在 table 上放置一个Image将在 table 上引用的列User,例如,一个用户可以有多个图像。前任,

用户

  • 用户名(主键
  • 第二个名字

图片

  • 名称(主键
  • 文件名
  • 用户名(外键

翻译成 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 回答