我有一个表结构如下:
`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);`
这个表格结构不好吗?
我正在使用它的sqlite数据库。
答案 0 :(得分:3)
根据您提供的有限信息。如果桌子符合您的需求,那么不是没有坏。
但是,如果您的同一作者有多个条目。您可能需要考虑从页面表中删除作者,并为作者创建单独的表,然后使用作者和页面之间的外键关系。
如果您为每位作者发送多封电子邮件,则可以对电子邮件执行相同的操作。
答案 1 :(得分:0)
如果失败可能是由于第二行“v”和“archar”之间的空格?虽然这可能只是剪切/粘贴错误。
答案 2 :(得分:0)
你还没有给我们太多的帮助。但是,如果您的项目有技术主管希望您满足某些结构标准,那么应该有书籍,纸张,文件或网页,告诉您对您的期望。
唯一不可空的列是无意义的ID号。这几乎肯定是一个问题。我不知道所有列名的含义,但我怀疑它们中的任何一个都应该是可以为空的。
所有varchar()列的长度都相同。这可能不是你想要的。
我猜“页面”指的是网页。如果是这种情况,那么可能希望“title”是唯一的。 (而你可能希望它少于255个字符。)
如果“email”表示“作者”的当前电子邮件地址,则“作者”和“电子邮件”之间存在传递依赖关系。 (它尚未在3NF。)如果“email”是指发布时“作者”的电子邮件地址,则“作者”和“电子邮件”之间可能存在多值依赖关系。 (所以它还没有在4NF。)
你 probaby 不希望电子邮件地址允许255个字符。
列“created_at”和“updated_at”是关于行的,而不是关于“页面”的。我更喜欢在单独的表中保存关于行的数据;这将减少实际数据的大小,缩小表格,允许每页更多行,并提高速度。