处理SQL数据问题的最佳方法
我有一个数据密集型的问题,需要大量的信息处理和数据操作,我把这个问题放在那里,看看是否有人知道如何处理它 以最简单的形式。我有很多表格可以连接在一起,给我一个牙医的价格清单,以及每个程序的费用 我们有多个表,看起来像这样处理SQL数据问题的最佳方法,sql,sql-server,database,database-design,stored-procedures,Sql,Sql Server,Database,Database Design,Stored Procedures,我有一个数据密集型的问题,需要大量的信息处理和数据操作,我把这个问题放在那里,看看是否有人知道如何处理它 以最简单的形式。我有很多表格可以连接在一起,给我一个牙医的价格清单,以及每个程序的费用 我们有多个表,看起来像这样 Dentist | Procedure1 | Procedure2 | Procedure3 | .........| Procedure? John | 500 | 342 | 434 | .........| 843 Dave
Dentist | Procedure1 | Procedure2 | Procedure3 | .........| Procedure?
John | 500 | 342 | 434 | .........| 843
Dave | 343 | 434 | 322 | NULLs....|
Mary | 500 | 342 | 434 | .........| 843
Linda | 500 | 342 | Null | .........| 843
牙医可以有不同的程序数量和每个程序的不同定价。但是有很多牙医都有相同的手术次数和相同的费用。在内部,我们为每个所谓的费用清单创建一个唯一的ID
就像约翰是001,戴夫是002,但玛丽是001,琳达是003
如果我必须处理这些数据一次,这并不是很糟糕,但这些费用清单是以平面文件(CSV)的形式出现的,我基本上必须将DTS升级到SQL server才能使用。他们每月都会来。每个牙医的定价可能每月都有变化,然后在内部将他们放入不同的唯一ID中
有人能解释一下如何最好地解决这个问题,这样每月处理一次就可以最有效,而不必进行大量的数据操作吗
任何帮助都会很好,谢谢各位。您可能需要取消对数据的归档以使其正常化,这样您就可以得到:
Doctor: DoctorID, DoctorDetails...
FeeSchedule: DoctorID, ScheduleID, EffectiveDate, OtherDetailAtThisLevel...
FeeScheduleDetail: ScheduleID, ProcedureCode, Fee, OtherDetailAtThisLevel...
当医生的数据输入时,它将被旋转,创建新的明细表,并根据未插入的数据创建明细行
SSIS有一个unpivot组件,这很好-您可以先加载计划,然后加载详细信息。如果格式差异很大,则可能需要自定义数据源,或者只需避免SSI
该系统将跟踪医生的新时间表。如果医生的日程安排是相同的,您可以简单地不插入它
如果此逻辑是广泛的,则可以将数据加载到暂存表(SSI或其他)中,并在SQL中执行所有这些操作(T-SQL还具有UNPIVOT运算符)。这样做的好处在于,代码都在一个地方,并且可以在集合中执行所有操作
关于邮政编码,如果医生不收费,这些是否与通常和习惯收费一样?这可以简单地根据医生行的邮政编码来确定。在这种情况下,您有几个选择。您可以将医生费用明细表覆盖在邮政编码费用明细表上:
ZipCodeSchedule: ZipScheduleID, ZipCode, EffectiveDate
ZipCodeScheduleDetail: ZipScheduleID, ProcedureCode, Fee
或者,您可以将其保存在常规费用计划中(可能带有某种标志,表示它已默认为UCR)。不幸的是,我们为这些费用清单创建了内部唯一ID。因此,如果一名医生共享相同的费用清单,他们将拥有相同的内部唯一ID。这是一次失败的正常化尝试。但这是针对个别案例的。现在,我们有基于zipcodes的地区收费清单。现在,如果这些费用明细表发生变化,实际上无法跟踪它们,因为根据费用明细表的类型,相同的ZIP可以有不同的费用明细表。@megatoast,在这种情况下,我的zipcode明细表需要有一个唯一的ekey on zipcode、FeeType、EffectiveDate