重新设计CRM中的成员实体的建议

| 我们有一个CRM,其中包含memebr实体作为系统中最重要的实体。事实是,它具有太多的属性,因此无法标准化。这是属性:
[MEMBER ID]
  ,[FIRST NAME]
  ,[LAST NAME],[TITLE],[ADDRESS 1],[ADDRESS 2]
  ,[ADDRESS 3],[POST CODE],[TELEPHONE HOME]
  ,[TELEPHONE WORK],[GENDER],[DURATION OF MEMBERSHIP],[START DATE]
  ,[AMOUNT PAID],[BALANCE],[STATUS],[DOB]
  ,[MONTH FEE],[ORIGINAL START DATE],[PAYMENT TYPE]
  ,[HEAR],[Interest],[NUMBER MONTH FEES]
  ,[FIRST MF DUE DATE],[LAST VISIT],[CARD NUMBER]
  ,[BANK NAME],[SORT CODE],[ACCOUNT NUMBER]
  ,[DEFINE1],[DEFINE2],[DEFINE3],[DEFINE4]
  ,[DEFINE5],[DEFINE6],[DEFINE7],[DEFINE8],[DEPENDENT]
  ,[ROLL NO],[ALLOWED VISITS],[TOTAL VISITS],[CREDIT LIMIT]
  ,[JOINING FEE],[NON VAT MONTH FEE],[PAYMENT METHOD]
  ,[CentreId],[Letter Title],[Email Address]
  ,[Vehicle Registration],[Standing Order Reference],[Notes]
  ,[Outstanding Balance],[MobileNo],[FaxNo],[Nonparent Password]
  ,[Emergency Name1],[Emergency Relation1],[Emergency HomeTel1],[Emergency WorkTel1],[Emergency MobileNo1]
  ,[Emergency Name2],[Emergency Relation2],[Emergency HomeTel2]
  ,[Emergency WorkTel2],[Emergency MobileNo2],[Doctors Name],[Doctors Tel],[Medical Info]
  ,[Password],[MethodOfContact],[Address 4],[Address 5]
  ,[Address 6],[ExtRef1],[ExtRef2],[ExtRef3],[ExtRef4],[OnMailingList],[HasChildren]
  ,[ParentMemberId],[MedicalIllness],[MedicalQuestion],[COMMENTS]
  ,[MembershipFeePaid],[JoiningFeePaid],[IsDeleted]
  ,[Pending],[Induction],[UserName]
  ,[CompanyName],[RowVer],[MembershipProductId]
  ,[Id],[EmailVerified],[ConcessionTypeId]
  ,[MemberTypeId],[Age],[Renewal_Date]
我正在考虑将这件事标准化。有什么建议么?     
已邀请:
首先,如果该字段已编号,则通常是标准化的候选对象。考虑将地址详细信息移出以开始。电话号码可以位于其他位置,并以类型存储,以免需要使用许多可能不使用的字段。如果为类型指定了顺序,则地址详细信息可以遵循类似的模式(例如,您可以得出字段应打印的顺序)。 银行详细信息是另一种选择。 这样考虑吧。成员应包含仅与成员直接相关的详细信息。不是会员的银行,地址等。它应包含其名字,姓氏,会员的直接属性的详细信息。 考虑查看以下这些链接中的一个想法: http://databases.about.com/od/specificproducts/a/normalization.htm http://support.microsoft.com/?id=209534 http://ipconflict.co.uk/2009/12/29/basic-guide-to-database-normalization-first-normal-form/     
数据库重构通常是一个很漂亮的过程。查看您是否可以通过RedGate获得SQL Refactor的许可证。 重构的一种方法是创建一个模仿当前表结构的视图。一旦外部应用程序从视图而不是从表中读取,就可以开始重构表(然后您只需要修改视图,而无需修改应用程序)。当然,这对插入或更新数据没有帮助,这是另一回事了:)     

要回复问题请先登录注册