这是我的表架构,
下面是反馈表功能的架构, 请对表格及其字段的长度和命名意义给出好的建议,
请分享您对表架构及其长度和命名约定的建议。
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,
这里他们说用varbinary而不是varchar,我们为什么要去varbinary,有什么好处
答案 0 :(得分:1)
尝试在可变长度字段之前放置固定长度字段(例如“status”)。这对逻辑没有任何影响,但访问这些字段时程序应该运行得稍快一些。
答案 1 :(得分: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”的外键吗?
答案 2 :(得分:0)
有些字段看起来可以归一化..比如状态为外键约束,状态表,以及人们作为单独的表,其中personid为FK。然后你可以做很酷的事情,比如查找所有人的反馈,或者删除所有人,等等。