为什么数据库人员继续关于规范化?
它是什么?它有什么用?
它适用于数据库之外的任何内容吗?
我有销售人员和豆子柜台试图向客户销售定制,这很好.但是当一个复杂的变更请求出现我发回一个大的估计时,他们会感到困惑.他们常常带着"为什么你不能再增加一列?"来回到我身边.另一方面,它们意味着PER客户端的十几个自定义列.
到目前为止,我所能回过头来的是"我们正在努力使数据库保持正常化",这对他们来说毫无意义.我告诉他们,我可以创建表的一个系统,让每一个客户来定义他们自己的自定义字段,当然这需要比"只是增加了一些列"更多的时间和金钱.当然,他们想要自己的蛋糕,也吃它.
那我怎么能让他们明白?
我在书中遇到了以下SQL:
CREATE TABLE 'categories'(
id SMALLINT NOT NULL AUTO INCREMENT,
category VARCHAR(30) NOT NULL,
PRIMARY KEY('id'),
UNIQUE KEY 'category'('category')
)ENGINE=MyISAM DEFAULT CHARSET = utf8;
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我需要在同一个表中使用PRIMARY和UNIQUE KEY?我想,这个问题的基础是,PRIMARY和UNIQUE键有什么区别?
在我的调度数据库中,我有一个"赋值"表,其中包含以下字段:
| assignment_date | start_time | end_time | task_ID | staff_ID |
Run Code Online (Sandbox Code Playgroud)
每个工作人员每天将有六到七个单独的任务,这意味着对于任何个人日期,当前的工作人员编号将有大约250个单独的条目.
我想知道是否有任何情况需要将日期字段提取到一个单独的表中(即更改assignment_date为assignment_date_ID).
这种规范化是否太过分了?我可以想象它会使查询更复杂一些,但是你能想到这个结构有什么好处可以抵消额外的复杂性吗?