You*_*nes 26 database database-design data-modeling
我被赋予了设计数据库的任务,以便为我们公司存储大量信息.因为任务相当大并且包含用户应该能够做的事情的多个模块,所以我担心为此设计一个好的数据模型.我只是不想最终得到一个设计糟糕的数据库.
我希望有一些合适的数据库结构示例,用于合同/计费/订单等,以便将它们组合在一个漂亮的关系数据库中.有没有资源可以帮我提供一些相关的例子?
APC*_*APC 24
Barry Williams已经发布了一个包含大约六百种数据模型的库,可用于各种应用程序.几乎可以肯定,它将为您的所有子系统提供"十个启动器".访问此库是免费的,所以检查出来.
听起来这是您组织想要的一个大型"企业级"应用程序,而您似乎是数据库的初学者.如果可能的话,你应该从一个子系统开始 - 例如,订单 - 然后开始工作.不只是数据库表构建,而是一些骨架前端.一旦足够好,就可以添加另一个相关的子系统,例如Billing.你不想最终得到一个庞大的怪物.
还要确保你有一个不错的数据建模工具. SQL Power Architect非常适合免费工具.
HLG*_*GEM 10
在开始阅读规范化之前,直到你完全没有问题为止.如果你只是在学校这样做,你可能还不太了解它的设计.
仔细收集每个模块的要求.你得知道:
业务规则(特定于应用程序并且必须在数据库中强制执行,因为它们必须在所有记录上强制执行,无论来源如何),
是否存在法律或监管问题(例如HIPAA或Sarbanes-Oxley要求)安全性(数据是否需要加密?)
您需要存储哪些数据以及原因(这些数据是否可在其他地方使用)
哪些数据只有一行数据,哪些数据需要多行
您打算如何强制执行每个表中行的唯一性?你有自然钥匙还是需要代理钥匙(几乎在所有情况下都建议使用代理钥匙)
你需要复制吗?
你需要审计吗?
如何将数据输入数据库?它是来自应用程序一次一个记录(甚至来自多个应用程序),还是来自ETL工具或其他数据库的批量插入.
您是否需要知道谁进入了记录以及何时(很可能在企业系统中这是必要的).
你需要什么样的查找表?当您可以使用查找表并将用户限制为值时,数据输入会更加准确.
您需要什么样的数据验证?
大致有多少记录系统?您需要了解创建测试数据的大小.
你打算怎么查询数据.您将使用存储过程或ORM或动态查询吗?
在设计中要记住一些非常基本的事情.为您的数据选择正确的数据类型.不要在字符串字段中存储您打算进行数学计算的日期或数字.将不适合数学的数字(部件号,邮政编码,电话号码等)存储为字符串数据,因为您可能需要前导零.不要在字段中存储多条信息.因此,没有逗号连接列表(这些表示需要相关表格),如果您发现自己正在执行类似phone1,phone2,phone 3的操作,请立即停止并设计相关表格.使用外键来实现数据完整性.
在整个设计过程中考虑数据完整性.没有完整性的数据毫无意义且毫无用处.进行性能设计,这在数据库设计中至关重要,并不是过早优化.数据库不容易重构,因此在第一次正确获得性能方程中最关键的部分非常重要.实际上,所有数据库都需要设计用于数据完整性,性能和安全性.
不要害怕有多个连接,正确索引这些将表现得很好.不要试图将所有内容都放入实体值类型表中.尽可能少地使用它们.尝试学习如何处理数据集,这将有助于您的设计.数据库经过优化,可以集成.
还有更多,但这足以开始消化.