2011-04-22 51 views
-2

这是我的表架构,完美的数据库设计

低于上午的反馈表格功能模式, 请给长好的建议和表及其字段命名的意义,

请分享你对表模式及其长度和命名约定的建议。

CREATE TABLE `mytest`.`tbl_feedback` (
`feedback_id` INT(30) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`first_name` VARCHAR(50) NOT NULL , 
`last_name` VARCHAR(50) NOT NULL , 
`email_id` VARCHAR(150) NOT NULL , 
`comment` TEXT NOT NULL , 
`cur_timestamp` VARCHAR(20) NOT NULL , 
`ipaddress` VARCHAR(20) NOT NULL , 
`status` INT(3) NOT NULL DEFAULT '0' 
) ENGINE = MYISAM ; 

也是我在这个线程varbinary看到,

在这里,他们所说的VARCHAR的使用VARBINARY isntead,我们又何必去VARBINARY,有什么优势

+5

没有IPv6,呃?太糟糕了。 – Borealid 2011-04-22 03:45:49

+2

这完全取决于您的数据。我们“思考它”是无关紧要的。我唯一能说的是,用'tbl_'前缀表名是多余的 - 它们都是表格。 – 2011-04-22 03:47:19

+0

@Madmartigan我将tbl_feedback更改为反馈,将其命名为反馈反馈,这是很好的建议,人们喜欢哪种方式。 – vlk 2011-04-22 03:51:03

回答

1

尝试在可变长度字段之前放置固定长度的字段(例如“状态”)。这对逻辑没有任何影响,但程序在访问这些字段时应该稍微快一些。

+0

固定长度字段的任何建议,我不明白你能举一个例子吗? – vlk 2011-04-22 06:35:54

+0

状态是一个整数,所以它是固定的大小。日期,而不是你在这里有一个,是固定的大小。所有的'varchars',特别是'comment'字段具有不可预知的长度,这意味着数据库引擎无法轻易地知道一个元组的结束位置和另一个元素的开始位置。目前我找不到这方面的参考。 – 2011-04-24 14:50:44

0

某些字段看起来他们的可以被规范化......就像外键约束的状态,状态表,以及人员作为一个单独的表格,人员身份为FK。然后你可以做一些很酷的事情,比如查看所有人的反馈,或者删除所有的人等。

1

这里只是一些意见:

  • 表名“tbl_feedback” - 这是个人喜好,但我会删除“tbl_”前缀 - 我从来没有碰到的情况下我发现在数据库对象上有前缀是很有用的。

  • email_id - 我将脱掉“_id”后缀。 ID是键列(主键或外键)的常用命名约定,您似乎也在使用该约定。就你而言,它似乎并不像email_id是一个外键,所以只是“电子邮件”可能会更好。

  • cur_timestamp - 像“created_date”或“updated_date”这样的名称可能会更有意义。使用cur_timestamp时,不清楚列的内容是什么,或者当您更新记录时应该更新它等。另外,对于此列,使用内置类型可能会很有用可以代表一个日期,而不是一个varchar。

  • ipaddress - 只是一个挑剔,但根据您的命名约定,它可能会更好,如果这是“ip_address”。另外,您可能希望使此列至少有40个字符或更大,以便您可以存储IPv6地址(使用通用符号)。

  • status - 此列是否指向另一个“状态”表?如果是这样,这是否应该是一个名为“status_id”的外键?

+0

嗨@Andy White,这里status_id只是为了将来的目的,目前的行为就像旗帜0或1.好吧,我把它作为状态。 – vlk 2011-04-22 06:34:19