mysql表设计,除法还是全部在一个表中?

时间:2013-03-13 07:54:12

标签: mysql database

我有桌子房子

CREATE TABLE `house` 
   `idhouse` int(11) NOT NULL AUTO_INCREMENT,
   `type` mediumint(2) DEFAULT NULL,
   `address` varchar(5) DEFAULT NULL,
   `county` varchar(5) ...

现在,我有广告功能。所以想把房子变成广告

方法1(直接添加要添加的列)

CREATE TABLE `house` 
   `idhouse` int(11) NOT NULL AUTO_INCREMENT,
   `type` mediumint(2) DEFAULT NULL,
   `address` varchar(5) DEFAULT NULL,
   `county` varchar(5) ...
   `ad_type` mediumint(2) DEFAULT NULL,
   `ad_urgency` int(11) DEFAULT NULL,   
   `ad_status` int(11) DEFAULT NULL,      

方法2(规范化,将其拆分为表广告)

CREATE TABLE `house` 
   `idhouse` int(11) NOT NULL AUTO_INCREMENT,
   `type` mediumint(2) DEFAULT NULL,
   `address` varchar(5) DEFAULT NULL,
   `county` varchar(5) ...

CREATE TABLE `Ads` 
   `idAds` int(11) NOT NULL AUTO_INCREMENT,
   `idhouse` int(11) NOT NULL AUTO_INCREMENT,   
   `ad_type` mediumint(2) DEFAULT NULL,
   `ad_urgency` int(11) DEFAULT NULL,   
   `ad_status` int(11) DEFAULT NULL,   
  • 我会做更多SELECT(90%)操作,而不是INSERT,UPDATE,DELETE(10%)
  • SELECT操作将 ALL 基于 ad_type,ad_urgency, ad_status等变量。
  • 我正在考虑很多表现。

我应该使用哪种方法?
使用方法1(没有连接的SELECT)比方法2(带连接的SELECT)更快?
如果更快,由多少?很多 ?

1 个答案:

答案 0 :(得分:1)

标准化有很多优点。

  • 它可以帮助您避免裁员。
  • 它使您的数据库结构更加灵活。
  • 它可以帮助您避免异常。
  • 复杂查询通常更容易。
  • 最小化您的数据

......还有一些。

单独的数据结构不能轻易地确定查询的速度,它受到许多不同方面的影响,如数据库配置,服务器硬件,索引,数据加载等等。

但是,由于较少的数据通常意味着更快的查询(有或没有连接):转到normalzied方法。系统结束的数据库管理员会感谢你。