具有一对多关系的维度属性
Dimension attribute with one-to-many relationship
我有一个维度中的属性请求,该维度与较低级别的维度具有一对多关系。
情况如下:
- 维度:员工
- 属性:未入学
我有 3 个源表:Employee、Language 和 LanguageLevel。
一个员工可以有多个未入学代码。
每个预科都有一个编号,start_date, expiration_date.
如何为这种情况建模?
您需要创建 Immatriculation-Dimension 并在链接回一侧 (Employee) 的关系的多侧 (Immatriculation) 使用外键。这给出了主键-外键关系。
这里有一个类似的案例。一本书可以有多个作者(为了使这是一对多关系,一个作者只能与一本书相关。否则就是多对多关系..):
CREATE TABLE dbo.Book
(
Pk_Book_Id INT PRIMARY KEY,
Name VARCHAR(255),
ISBN VARCHAR(255)
);
CREATE TABLE dbo.Author
(
Pk_Author_Id INT PRIMARY KEY,
FullName VARCHAR(255),
MobileNo CHAR(10),
Fk_Book_Id INT FOREIGN KEY REFERENCES Book(Pk_Book_Id)
);
INSERT INTO Book VALUES (1, 'Let is Snow', 'ISBN3030303');
INSERT INTO Book VALUES (2, 'Three Cups of Tea','ISBN638242');
GO
INSERT INTO dbo.Author VALUES(100,'John Green','30303',1);
INSERT INTO dbo.Author VALUES(101,'Maureen Johnson','4343',1);
INSERT INTO dbo.Author VALUES(102,'Lauren Myracle','76665',1);
INSERT INTO dbo.Author VALUES(103,'Greg Mortenson','6434',2);
INSERT INTO dbo.Author VALUES(104,'David Oliver Relin','72322',2);
GO
SELECT * FROM dbo.Book;
SELECT * FROM dbo.Author;
我有一个维度中的属性请求,该维度与较低级别的维度具有一对多关系。
情况如下:
- 维度:员工
- 属性:未入学
我有 3 个源表:Employee、Language 和 LanguageLevel。
一个员工可以有多个未入学代码。 每个预科都有一个编号,start_date, expiration_date.
如何为这种情况建模?
您需要创建 Immatriculation-Dimension 并在链接回一侧 (Employee) 的关系的多侧 (Immatriculation) 使用外键。这给出了主键-外键关系。
这里有一个类似的案例。一本书可以有多个作者(为了使这是一对多关系,一个作者只能与一本书相关。否则就是多对多关系..):
CREATE TABLE dbo.Book
(
Pk_Book_Id INT PRIMARY KEY,
Name VARCHAR(255),
ISBN VARCHAR(255)
);
CREATE TABLE dbo.Author
(
Pk_Author_Id INT PRIMARY KEY,
FullName VARCHAR(255),
MobileNo CHAR(10),
Fk_Book_Id INT FOREIGN KEY REFERENCES Book(Pk_Book_Id)
);
INSERT INTO Book VALUES (1, 'Let is Snow', 'ISBN3030303');
INSERT INTO Book VALUES (2, 'Three Cups of Tea','ISBN638242');
GO
INSERT INTO dbo.Author VALUES(100,'John Green','30303',1);
INSERT INTO dbo.Author VALUES(101,'Maureen Johnson','4343',1);
INSERT INTO dbo.Author VALUES(102,'Lauren Myracle','76665',1);
INSERT INTO dbo.Author VALUES(103,'Greg Mortenson','6434',2);
INSERT INTO dbo.Author VALUES(104,'David Oliver Relin','72322',2);
GO
SELECT * FROM dbo.Book;
SELECT * FROM dbo.Author;