私はデータベース設計に比較的慣れていません。次のデザインのデータベースがあります
次のように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.) 3 つの属性すべてが一意ではないため、GEM テーブルに主キーを指定するにはどうすればよいですか?
2.) person テーブルで person_id 属性を使用して一意にし、それを主キーとして使用しました。余分な属性を追加せずに person テーブルの主キーを作成する別の方法はありますか?既存の属性をUNIQUEにする
3.) すべての整合性制約とデータ型は正しいですか? 私のデザインに何らかの欠陥がありますか?