我想构建一个数据库,其中包含表中用户的信息:
User
-username (primary key)
-first_name
-second_name
-Image
在这个数据库中会有另一个表格如下:
Image
-name (primary key)
-file_name
我希望每个用户都将Image作为其中一个字段。我明白这样做我必须连接表格。
首先我应该将表定义为InnoDB,然后使用phpmyadmin单击relationView。
如何使用phpmyadmin实现上述关系?
答案 0 :(得分:0)
您应该在表Image
上放置一个列,该列将在表User
上引用,如果对于intance,用户可以有多个图像。前,
用户强>
图片强>
翻译成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)
);
答案 1 :(得分: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;