如何将关系模型转换为与另一个弱实体相关的弱实体? 提前致谢!
我想将此ER MODEL转换为关系数据库结构。所以,我想知道这是否正确:
BOOK_STORE(idBookStore, address);
SECTION(idBookStore, sectionNumber, surface)
WHERE idBookStore REFERS BOOK_STORE;
SHELL(shellNumber, sectionNumber, idBookStore)
WHERE sectionNumber
REFERS TO SECTION and
idBookStore REFERS TO BOOK_STORE.
所以我的问题是:这是正确的吗?
答案 0 :(得分:1)
我会使用这个create table语法来实现ER图
CREATE TABLE bookStore (
idBookstore integer,
address text,
PRIMARY KEY(idBookstore)
);
CREATE TABLE section (
idBookstore integer,
sectionNumber integer,
surface text,
FOREIGN KEY (idBookstore) REFERENCES bookStore.idBookStore,
PRIMARY KEY (idBookstore, sectionNumber)
);
CREATE TABLE shell (
idBookstore integer,
sectionNumber integer,
shellNumber integer,
FOREIGN KEY (idBookstore) REFERENCES bookStore.idBookStore,
FOREIGN KEY (sectionNumber) REFERENCES section.sectionNumber,
PRIMARY KEY (idBookstore, sectionNumber, shellNumber)
);
这里要考虑的关键点是定义弱实体的关键是什么。然后,您可以替换相关实体的主键。
因此,在这种情况下,section
的主键是元组(idBookstore,sectionNumber)
。我们将用X
代替这个论点。
shell
与该部分相关并且是一个弱实体,所以它的关键应该是(X, shellNumber)
。这与section
的格式相同。我们可以展开X
以获取正确的外键(idBookstore, sectionNumber, shellNumber)
。
答案 1 :(得分:1)
CREATE TABLE bookStore (
idBookstore integer,
address text,
PRIMARY KEY(idBookstore)
);
CREATE TABLE section (
idBookstore integer,
sectionNumber integer,
surface text,
FOREIGN KEY (idBookstore) REFERENCES bookStore.idBookStore,
PRIMARY KEY (idBookstore, sectionNumber)
);
CREATE TABLE shell (
idBookstore integer,
sectionNumber integer,
shellNumber integer,
FOREIGN KEY (idBookstore) REFERENCES bookStore.idBookStore,
FOREIGN KEY (sectionNumber) REFERENCES section.sectionNumber,
PRIMARY KEY (idBookstore, sectionNumber, shellNumber)
);