私はデータベース設計に比較的新しいです。私は次のデザインを持つデータベースを持っています問題SQLでテーブルを指定する
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));
私の質問は、すべての3つの属性が一意でないと、私はGEM_IDのような新しい属性を作成する必要がありますどのように私は私のように、GEMのテーブルに主キーを指定することができます)
1です。既存の属性を使用し、新しい属性を追加しないことをお勧めします。
2)personテーブルのperson_id属性をユニークにしてプライマリキーとして使用しましたが、別の属性を追加せずにpersonテーブルのプライマリキーを作成する別の方法はありますか?既存の属性に制約を含めてユニークにする
3.すべての整合性制約とデータ型は正しいですか?私のデザインには何らかの欠陥がありますか?
この宿題はありますか?どのRDBMSを使用していますか? – Vache
Microsoft SQL Serverを使用しています。私のschlのウェブサイトプロジェクトのためのそのデザイン –