我对数据库设计比较陌生。我有一个具有以下设计的数据库
我在 SQL 中指定了如下表。
CREATE TABLE Piece
(identifier INT NOT NULL Unique,
value INT NOT NULL,
the date it was acquited DATE,
the date it was made DATE,
PRIMARY KEY (identifier));
CREATE TABLE Person
(name VARCHAR(50),
person_id INT NOT NULL Unique,
biography VARCHAR (50),
date of birth DATE,
date of death DATE,
PRIMARY KEY (person_id));
CREATE TABLE Jewel
(code INT NOT NULL Unique,
gem type VARCHAR (50),
weight INT,
quality VARCHAR (50),
color VARCHAR (50),
description VARCHAR (50),
PRIMARY KEY (code));
CREATE TABLE Gem
(type VARCHAR (50) NOT NULL,
hardness INT,
density INT,
FOREIGN KEY (type) references JEWEL(gem type));
CREATE TABLE Ownership
(person VARCHAR (50),
piece INT,
start of ownership DATE,
end of ownership DATE,
FOREIGN KEY (person) references PERSON(person_id),
FOREIGN KEY (piece) references PIECE(identifier));
我的问题是
1.) 我如何指定 GEM 表的主键,因为所有 3 个属性都不是唯一的,我是否必须创建一个像 Gem_id 这样的新属性,因为我更喜欢使用现有属性而不是添加新属性。
2.)我在 person 表中使用了 person_id 属性使其唯一并将其用作主键,是否有另一种方法可以在不添加额外属性的情况下为 person 表创建主键,显然我不能包含约束现有属性并使其唯一
3.) 所有完整性约束和数据类型都正确吗?我的设计是否有任何缺陷。