设计数据库的正确方法

时间:2009-07-26 13:46:13

标签: database erd

我开始设计ERD, logical and physical diagrams的第一个MySQL项目。

我的一个朋友正和我做同一个项目。我通过制作ERD然后规范化来开始我的数据库计划。

然而,他使用关系数据库图表,他在制作ERD之前先设计界面和其他部分。例如,他只将“堆栈”写入列phonenumbers,而不是制作“帮助表”。他说最好先制作接口然后制作ERD。

我们中哪一位更适合您的计划?

2 个答案:

答案 0 :(得分:3)

有人可以和许多人一起写过这本书。

然而,概括我通常会做的是

  1. 分析您的数据并将其降低到第3范式。这应该是非常公式化的。
  2. 根据数据的可能业务用途,决定数据是否应归一化以及在何处进行非规范化。通常情况下,大多数数据库绝大多数都处于正常状态,只有少数关键异常。这部分是体验和工艺的用武之地。
  3. 鉴于上述情况,请创建可能需要的任何其他索引,或修改现有的主索引(应在阶段1中分配)。
  4. 根据需要为用户访问创建视图。您需要的数字可能从无(如在简单的嵌入式应用程序中)到许多(因为不允许直接数据访问表格)。
  5. 创建您需要的任何程序,并可能触发(通常最好避免,但适合审计目的)。
  6. 在实践中,当然这个过程要迭代得多,但从数据到界面的一般设计路径都是正确的。此外,在设计数据库时要记住,您希望稍后更改它,并尽可能尝试使其成为一项相当简单的任务。

答案 1 :(得分:1)

我不确定“接口和操作”是什么意思,但是你设计模式的方式是正确的 - 做一个ERD并正确规范化。许多人刚刚开始时,会采用设计的快捷方式,以使模式符合他们当前的查询技能水平。

例如,不是创建电话号码表并将这些电话号码映射到“客户”表,而是可能只是在名为Phone1 Phone2 Phone3 ...的列中。在设计查询时,这可能是以后的死亡之吻。

所以我的建议......用ERD创建规范化数据模型。然后阅读VIEW和用户定义的函数,以便在需要查询它的人的必要时“展平”您的模式。对于一般的答案很抱歉,但这是一个普遍的问题......