这个表模式结构有什么不好

时间:2012-02-09 15:17:49

标签: sqlite database-design database-schema

我有一个表结构如下:

`CREATE TABLE "pages" (
   "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
   "title" varchar(255),
   "body" varchar(255),
   "author" varchar(255), 
   "email" varchar(255), 
   "reference" varchar(255),
   "created_at" datetime,
   "updated_at" datetime);`

这个表格结构不好吗?

编辑-1

我正在使用它的sqlite数据库。

3 个答案:

答案 0 :(得分:3)

根据您提供的有限信息。如果桌子符合您的需求,那么不是没有坏。

但是,如果您的同一作者有多个条目。您可能需要考虑从页面表中删除作者,并为作者创建单独的表,然后使用作者和页面之间的外键关系。

如果您为每位作者发送多封电子邮件,则可以对电子邮件执行相同的操作。

答案 1 :(得分:0)

如果失败可能是由于第二行“v”和“archar”之间的空格?虽然这可能只是剪切/粘贴错误。

答案 2 :(得分:0)

你还没有给我们太多的帮助。但是,如果您的项目有技术主管希望您满足某些结构标准,那么应该有书籍,纸张,文件或网页,告诉您对您的期望。

唯一不可空的列是无意义的ID号。这几乎肯定是一个问题。我不知道所有列名的含义,但我怀疑它们中的任何一个都应该是可以为空的。

所有varchar()列的长度都相同。这可能不是你想要的。

我猜“页面”指的是网页。如果是这种情况,那么可能希望“title”是唯一的。 (而你可能希望它少于255个字符。)

如果“email”表示“作者”的当前电子邮件地址,则“作者”和“电子邮件”之间存在传递依赖关系。 (它尚未在3NF。)如果“email”是指发布时“作者”的电子邮件地址,则“作者”和“电子邮件”之间可能存在多值依赖关系。 (所以它还没有在4NF。)

probaby 不希望电子邮件地址允许255个字符。

列“created_at”和“updated_at”是关于行的,而不是关于“页面”的。我更喜欢在单独的表中保存关于行的数据;这将减少实际数据的大小,缩小表格,允许每页更多行,并提高速度。