Mysql 这种建模提高了数据库的性能

Mysql 这种建模提高了数据库的性能,mysql,sql,database,Mysql,Sql,Database,我可以用这张桌子 CREATE TABLE product { id int not null, name varchar(60), keywords varchar(150), meta_desc varchar(150), PRIMARY KEY (id) } 所以我做了一个选择: SELECT name FROM product; 但在我的选择中,我并不总是需要关键词或描述,我想,这样做会更好: CREATE TABLE product {

我可以用这张桌子

CREATE TABLE product {
    id int not null,
    name varchar(60),
    keywords varchar(150),
    meta_desc varchar(150),
    PRIMARY KEY (id)
}
所以我做了一个选择:

SELECT name FROM product;
但在我的选择中,我并不总是需要关键词或描述,我想,这样做会更好:

CREATE TABLE product {
    id int not null,
    name varchar(60),
    PRIMARY KEY (id)
}

CREATE TABLE description {
    id int not null,
    keywords varchar(150),
    meta_desc varchar(150),
    product_id int not null,
    CONSTRAINT fk_prod FOREIGN KEY (product_id) REFERENCES product(id)
}
这两种情况产生相同的结果,但有一些是最佳选择建模


谢谢…

性能仅通过插入索引来控制。NOTNULL只是一个约束,它阻止在此处输入nil数据。如果product_id是可选的,您不应该提供它,因为它强制它是非可选的。

当您不需要所有字段时,为什么不使用select name from product?很难说您在问什么。请用更多的词,也许我们能理解你想知道的。首先应该应用标准规范化规则,一个产品能有很多关键词和描述吗?这正是lulco引用的。最好创建一个包含所有字段name、description、meta description的表,或者创建两个表,其中另一个表将包含这些描述,因为在任何时候都不需要它们。好的,一个选择名称的产品作为一个例子可以解决这个问题,但是在建模问题上,它不是更好吗?