从另一个系统导入数据的设计数据库

时间:2015-02-17 15:00:08

标签: sql-server

我正在开发一个项目管理网站,该网站使用PSI从MS Project 2010导入其主要数据。 该网站由白天正在处理它的项目经理使用。 导入是每晚完成的,因此与数据检索相比,导入性能并不重要。

主要实体如下:

  • 项目
  • 资源
  • 任务

在MS Project中,表使用GUID作为主键。 主要实体与许多表相关,其中一些(如ProjectResources,工作 - 计划的每小时数/每个任务的每个资源的实际日志)也从MS Project导入。

目前我可以自由修改系统中的某些表,因为当前的数据库结构很差(缺少主键和索引)。

请记住:

  • 使用GUID作为群集主键具有性能和存储影响
  • 我们系统中的几乎所有表(约150个表)都与这些主要实体相关
  • 从MS Project导入的数据仅在我们的系统中读取

我正在考虑每个主要实体的以下结构:

  • EntityId(int):PK,clustered(IDENTITY);
  • EntityUid(uniqueidentifier):INDEX,非群集
  • 其他栏目

注意:外键将引用EntityId列,GUID仅在导入时使用,以识别必须插入或更新的条目。

另一种选择是将EntityUid设置为主键(非群集),将EntityId设置为聚簇索引。将两个EntityUid和EntityId中的哪一个设置为主键更有意义?

你认为这种方法有任何缺点吗?或者是否有更适合我项目的解决方案?

请记住,我已阅读以下文章,但由于解决方案始终基于要求,我可以真正使用您的建议:

http://www.sqlskills.com/blogs/kimberly/guids-as-primary-keys-andor-the-clustering-key/

What are the best practices for using a GUID as a primary key, specifically regarding performance?

Guid Primary /Foreign Key dilemma SQL Server

http://blog.codinghorror.com/primary-keys-ids-versus-guids/

http://databases.aspfaq.com/database/what-should-i-choose-for-my-primary-key.html

http://www.codeproject.com/Articles/388157/GUIDs-as-fast-primary-keys-under-multiple-database

uniqueidentifier PK with int Clustered: Which to use as foreign key?

0 个答案:

没有答案
相关问题