mysql - 我如何标准化我的数据库设计?

标签 mysql

我有两个名为“管理”和“服务”的 mysql 表。

“管理”表有字段:

- id    
- name    
- designation    
- description    
- added_date

“服务”表有字段:

- id    
- name    
- description    
- added_date

“管理”表中的每个人都应该有一张图像。 (他们的个人资料图片),在“服务”表中它将有多个服务,每个服务应该有多个图像。

所以我的问题是,如何将这些图像获取到一个名为“image_info”的表以及它们如何彼此分开?

更新:这就是我的尝试方法:

# ------------------------
# -- Image Category Table 
# ------------------------

CREATE TABLE IF NOT EXISTS image_category(
    category_id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(60) NOT NULL,  
    PRIMARY KEY (category_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

# ------------------------------------------
# -- Dumping data for table "image_category"
# ------------------------------------------

INSERT INTO image_category 
                        (name) 
                        VALUES
                        ('service'),
                        ('management'); 

# ------------------------
# Image Table 
# ------------------------

CREATE TABLE IF NOT EXISTS image_info(
    image_id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
    category_id INT(4) NOT NULL, 
    image VARCHAR(80) NOT NULL, 
    image_path VARCHAR(150) NOT NULL, 
    extention VARCHAR(10) NOT NULL, 
    image_size VARCHAR(10) NOT NULL,
    dimension VARCHAR(15) NOT NULL,
    mime_type VARCHAR(20) NOT NULL,
    alt_text TEXT DEFAULT NULL, 
    added_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (image_id),
    UNIQUE (image)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

希望有人能帮助我。

谢谢。

最佳答案

您可以向 management 表添加一个名为 profile_image 的列,如果未设置,它将为 null。因为这是一对一的关系。您不需要另一个表来分隔属于一起的信息。

至于服务,情况有所不同,因为每个服务可以有多个图像。为了处理这个问题,添加一个基本上像这样的images

images table
------------
id
service_id
name
...

如果服务有多个图像,那么 images 表中将有多个具有相同 service_id 的条目。

由于服务图像和个人资料图片没有任何关联,因此将它们存储在同一个表中是没有意义的。

关于mysql - 我如何标准化我的数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030053/

相关文章:

mysql - SQL 在查询中引用当前记录 ("this")

mysql - 如何在不使用循环的情况下检查mysql游标结果为空

PHP 检查是否为空变量

java - 从数据库中检索数据,将数据用作 java 方法的参数

php - 文件生成器 PHP

java - ON DUPLICATE KEY UPDATE 的准备语句语法(参数数量错误)

php - try catch,和多个mysql insert语句。它会接受所有还是拒绝所有查询?

mysql - PHP Mysql - 添加空行无法解决

php - 如果最后一个 id 被删除,则获取下一个 id

MySQL 中日期和 BETWEEN 的奇怪之处