【Coursera】University of Colorado ; Database Management Essentials (3)

Database Management Essentialの講義ノート

【Integrity constraint syntax】
講義標題。
Q. why are constraint names important?


SQLのConstraint(制約)について。以下3種の制約がある。

・主キー制約付きのCREATE TABLE
・外部キー制約付きのCREATE TABLE
・CHECK付きのCREATE TABLE

UNIQUEは主キーには適用されない。なぜなら主キーはUNIQUEである前提だから。

前の章のテーブル作成演習のクエリにもconstraintがある。

constraintの例を見てみよう。

#以下の制約は、PKCourseという制約名で、CourseNo列を主キーとする制約である。
CONSTRAINT PKCourse PRIMARY KEY (CourseNo)

#以下の制約は、PKEnrollmentという制約名で、OfferNoとStdNoの一連を、主キーとする制約である。
CONSTRAINT PKEnrollment PRIMARY KEY (OfferNo, StdNo)

#以下の制約は、CrsDesc列について、各行の内容を一意とする制約である。
CONSTRAINT UniqueCrsesc UNIQUE (CrsDesc)

#以下の制約は、OfferNo列について、OfferingテーブルのOfferNo列を参照する外部キーとする制約である。
CONSTRAINT FKOfferNo FOREIGN KEY (OfferNo) REFERENCES Offering (OfferNo)

#以下の制約はOracle SQL?
CONSTRAINT OffCourseNoReq NOT NULL


MySQLのNOT NULL制約は以下のはず。。ちょくちょくMySQLでは使えない構文がある。都度検証して正しい記述法を調べる。

CREATE TABLE Faculty(
FacNo			char(11) CONSTRAINT hoge not null,
…
…
);

制約名を省略した場合は、自動的に制約名が付与される。(これはMySQLでもそうか?確認。)

インラインでのキーワード制約(not nullやchar、int指定)はオプショナル。external constraintでは必須。
例えば以下の2つのnot null制約を見ると、カラムFocNoではconstraint名が指定されているが、カラムFugaではconstraint名が指定されていない。
また、external constraintであるCONSTRAINT hoge…の箇所はconstraint名が指定されている。

CREATE TABLE Faculty(
FacNo			char(11) CONSTRAINT hogeConst not null,
Fuga			char(11) not null,
…
CONSTRAINT hoge primary key (FacNo)
);


以下の場合、not nullがインラインでのconstraint、CONSTRAINT … がexternal constraintとなる。

CREATE TABLE Faculty(
FacNo			char(11) CONSTRAINT hoge not null,
…
CONSTRAINT hoge primary key (FacNo)
);

単一カラムを指定するconstraintは、外部でもインラインでも可能。
複数カラムを指定するconstraintは、外部制約で実行。


CHECK制約について。
以下の1-3番目の制約は、単一カラムについてなので、インラインでもexternalでも記述可能。
4つ目の制約は、複数カラムについてなので、externalのみ記述可能。

CONSTRAINT ValidGPA CHECK ( StdGPA BETWEEN 0 AND 4 )
CONSTRAINT ValidStdClass CHECK ( StdClass IN ( ‘FR’, ‘SO’, ‘JR’, ‘SR’ ) )
CONSTRAINT OffYearValid CHECK ( OffYear > 1970 )
CONSTRAINT EnrollDropValid CHECK ( EnrollDate < DropDate )


・ここまでの講義で、わからなかった・忘れていた単語
referential integrity constraints 参照整合性制約
gymnasium 体育館
intercollegiate 大学間の
inclusive 包括的な
parenthesis かっこ
bespoke オーダーメイド
fiddly 扱いづらい
weed 麻薬(ハッパ)
tedious うんざりする
A is very exacting. Aは無理な/過酷な/厳しい要求をする。
subset 部分集合
permissible 許容可能な
mimic 真似する
graded 段階的な
adjoin 隣接する(動詞)
depict 描写する
depiction 描写
abbreviation 略語
convention 慣例
cumulative 累積的な
terminology 用語
modest 控えめな
elaborate 詳細に述べる
nefarious 邪悪な
unconventional 型破りの
substantial かなりの
repetitive 繰り返し
inventory 在庫
whereas 一方
contingent on …次第
laborious 骨の折れる
pervasive 染み渡る 普及する
proliferation 増殖
conventional 従来の
tangible 有形の