請考慮以下幾點:SQL服務器自參照查詢
CREATE DATABASE TEST
USE TEST
CREATE TABLE Student
(
StudentID INT IDENTITY
PRIMARY KEY ,
FirstName NVARCHAR(50) ,
LastName NVARCHAR(50)
)
CREATE TABLE StudentComponent
(
StudentComponentID INT IDENTITY
PRIMARY KEY ,
StudentID INT FOREIGN KEY REFERENCES dbo.Student(StudentID) ,
ComponentName NVARCHAR(50) ,
ComponentRef NVARCHAR(50) ,
ComponentType NCHAR(2)
)
CREATE TABLE Component
(
ComponentID INT IDENTITY
PRIMARY KEY ,
StudentComponentID INT FOREIGN KEY REFERENCES dbo.StudentComponent(StudentComponentID) ,
ComponentName NVARCHAR(50) ,
ComponentRef NVARCHAR(50) ,
ComponentType NCHAR(2)
)
我有3個表
- 學生
- StudentComponent
- 組件
拆分爲三個維度
CREATE TABLE DimClass
(ClassDwKey INT,
ClassName NVARCHAR(50),
ClassRef NVARCHAR(50))
CREATE TABLE DimCollege
(CollegeDwKey INT,
CollegeName NVARCHAR(50),
CollegeRef NVARCHAR(50))
CREATE TABLE DimSubject
(SubjectDwKey INT,
SubjectName NVARCHAR(50),
SubjectRef NVARCHAR(50))
CREATE TABLE DimStudent
(StudentDwKey INT,
StudentName NVARCHAR(50))
INSERT INTO
CREATE TABLE FactAcademicEvent
(StudentDwKey int, ClassDwKey int, CollegeDwKey int, SubjectDwKey INT)
它們之間的關係相同(學生 - >學生組件 - >組件)。我已經將組件分成了它們自己的維度,DimClass,DimCollege,DimSubject(由componenttype字段拆分,='CL'爲類,'SU'爲主題,'CO'爲大學等我試圖加載一個事實表從我的維度獲得我的代理鍵並生成以下行:
StudentDwKey(來自dimstudent),ClassDwKey,CollegeDwKey,SubjectDwKey。維與組件表之間存在關聯,ComponentKey通過學生組件錶鏈接到學生。
StudentComponent和組件基本上是相同的,除了StudentComponent引用學生,讓有更多的行。
任何想法?
所以組件名稱和ref等於類名,classref,collegename,collegeref等 – jhowe