我正在开发一个项目管理网站,该网站使用PSI从MS Project 2010导入其主要数据。 该网站由白天正在处理它的项目经理使用。 导入是每晚完成的,因此与数据检索相比,导入性能并不重要。
主要实体如下:
在MS Project中,表使用GUID作为主键。 主要实体与许多表相关,其中一些(如ProjectResources,工作 - 计划的每小时数/每个任务的每个资源的实际日志)也从MS Project导入。
目前我可以自由修改系统中的某些表,因为当前的数据库结构很差(缺少主键和索引)。
请记住:
我正在考虑每个主要实体的以下结构:
注意:外键将引用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?