2013-03-09 88 views
0

我想建立持有有關表中的用戶信息的數據庫:MySQL的提醒

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

在這個數據庫中就會有另一個表像這樣:

Image 
-name (primary key) 
-file_name 

我想實現的目標

我希望每個用戶都有Image作爲其中一個字段。我明白要做到這一點,我必須連接表格。

我知道什麼到目前爲止

首先我應該定義表爲InnoDB的,然後使用phpMyAdmin點擊relationView。

問題

如何使用phpmyadmin實現上述關係?

回答

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

您應該在表Image上放置一個列,該列將在表User上引用,如果對於實例,用戶可以具有多個圖像。離,

用戶

  • 用戶名(主鍵
  • 如first_name
  • SECOND_NAME

圖片

  • 名(主鍵
  • FILE_NAME
  • 用戶名(外鍵

翻譯成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) 
); 
+0

如果有什麼不只是用於用戶的圖像表?但也可以是用於其他目的的其他圖像。 – Svip 2013-03-09 16:18:06

+0

@Svip實際上除此之外還有其他任何設計。我只是假設table'images'包含每個'user'的圖像。在你的情況下,我會爲它製作3個表格。 – 2013-03-09 16:22:55