我非常精通SQL Server,MySQL,Oracle等,但把这些数据库产品放在一边,是否有资源可以帮助我很好地设计关系数据库?是否有类似于数据库设计的模式或最佳实践?
我曾经多次看到数据库通常无法扩展; 人们有个人偏好,保留像isChecked列这样的列,它本质上是布尔值但存储为Char(1),其值为'Y'和'N'而不是0和1对我来说听起来更好.在进行数据库设计时不会犯常见错误的方法?
书籍或文章的链接将受到高度赞赏.
提前致谢.
Roc*_*der 45
几点:
Sco*_*ski 20
我对此的看法有点逆势而上.我建议,不要过分强调数据库的设计.
有时这可能很难.对于内部LOB应用程序,业务的主流观点通常是DATA是主要资产,而软件在某种程度上是可消耗的.
我的建议是:不要买它.
实际上,资产是公司与数据交互的能力.查看它,操纵它,并根据它做出决定.
这意味着即使它们可能对数据赋予很高的价值,它们实际上重视的是您正在编写的软件.
这意味着我将把大部分精力集中在构建有效的用户体验上,而不是"设计完美的数据库".数据库实际上只是一种工具,可以让您提供用户体验.
关系数据模型的关键特性是数据和访问路径独立性.您可以添加列,更改密钥,引入或删除索引等,同时对使用它的应用程序的影响为零(或接近于零).
这使得数据库结构非常柔韧.
试图将数据库设计为"对未来具有灵活性"或"优化性能"主要是浪费精力.
更改数据库的结构对系统的影响相对较小.
此外,在您遇到需要扩展的场景之前,您实际上无法预测数据库的扩展方式.您最好的选择是等到遇到性能问题.然后专门解决它们.
但是,更改应用的用户体验通常会更加昂贵.UI工作非常耗时,通常需要一段时间才能正确完成.
所以,我建议你:
小智 7
对抗Dillie-O的建议.我建议您不要将所有查找放在一个表中.通常,这是试图强迫OO设计进入关系数据库.它可以完成,它符合OO开发人员的世界观,但它会导致严重的数据库设计.
跳转到Google并搜索"MUCK Tables",引导您讨论Massively Unified Code-Key Tables.或者,您可以查找"一个真正的查找表"进行讨论.或者甚至阅读Joe Celko的文章One True Lookup Table.