Transcript tuple

Relational Model
Relational Model
• E.F.Coddにより提案(1970)
• 極めてシンプル且つ 理論基盤強固
• 過去20数年にわたり 多数の商用システ
ムで実装されてきた。
– それ以前は 階層モデル、網モデル
Relational Model Concept
– 直感的にはDBをテーブルの集合で表現
– テーブルはEntityも、Relationshipも表現。
• Domain: a set of atomic values
– Atomic means that each value in the domain is indivisible as far as
relational model is concerned.
– 例 電話番号、名前、所属部署コードetc.
• A relational Scheme R, denoted by R(A1,A2,..An) is made up of
a relation name R and list of attributes A1,A2,..,An. Each
attribute Ai is the name of a role played by some domain D in
the relation schema R.
• D is called domain of Ai and is denoted as Dom(Ai).
• R is is called the name of this relation.
• The degree of a relation is the number of attributes. n
例
• STUDENT(Name, SSN, HomePhone,
Address, OfficePhone, Age, GPA)
• STUDENT: relation name
• Degree : 7
• dom(OfficePhone)=dom(HomePhone)=
Local_phone_numbers
Relational instance
• r(R) : a set of n-tuples r={t1,t2,…,tm}
•
tuple is a ordered list of n values.
•
t=<v1,v2,…..vn>
•
vi( 1≦ i≦n ) ∈ dom(Ai) or null
•
t[Ai] = vi for notation.
• 例 タプルが一人の学生のentityを示す。
– NULLは値が存在しない場合を指す(ERを参照)
Restatement
• A relation r(R) is a mathematical relation of
degree n on the domains dom(A1), dom(A2), … ,
dom(An), which is a subset of the Cartesian
product of the domains that define R
• r(R)⊆(dom(A1) X dom(A2) X … X dom(An))
• リレーションのインスタンスは直積の部分集合と
見なせる。これは変化するものの、relational
schemeはあまり変化しないという前提
フラットファイルと何が違う?
• タプルの順序
– 集合故、順序無し。実装時には意味を持つ場合もあ
る。
• タプル内の値の順序
– Tupleはordered listであるため、順序は意味を有する。
しかし論理的には対応が取れれば十分。
(<attribute>,<value>)の集合としてタプルを定義するこ
とも可能。実際の実装では順序で簡単化している。
• タプル中の値
– Atomic.
– ERモデルで紹介したcomposite attributeやmultivalued attributeは許されない。(first normal form)
multi-valued attributeは別relationとして表現
Notation
• A relation Schema R of degree n is denoted by
R(A1,A2,….An)
• An n-tuple t in a relation r(R) is denoted by t=<v1,
v2, … , vn> where vi is the value corresponding
to attribute Ai.
• t[Ai], t.Ai refers to vi in t for attribute Ai
• Q,R,S: relation names
• q, r, s: relation instance
• t, u, v: tuples
• R.A: attribute qualified with the relation R
Relational Constraints
• Domain Constraints: atomic value
• Key Constraints: all tuples in a relation must be distinct.
– SKなるアトリビュートサブセットに関して全てのタプルを区別出来るとす
ると、SKをsuperkeyと呼ぶ:uniqueness constraint
•
t1[SK] ≠ t2[SK]
– デフォールトsuperkey: all key
– Key: minimal superkey
• SKアトリビュートから一つでもアトリビュートを削るとuniquenessを保証出来
なくなる。
– Time invariant:意味から決定すべきであり、実体から導かれる物ではな
い。例 Nameはkeyではない。保証無し。
– Candidate key:一つ以上のkeyがある時にそれぞれを指す。
– Primary key:candidate keyの代表。少ない属性数のものを選択
Relational Database Schema
• データベースは複数のリレーションから構
成される。
• relational database schema S is a set of
relation schemas S={R1, R2,… Rm}
• 例
– Relational database schema
– Relational database instance
例
• DNUMBERはDEPARTMENTと
DEPT_LOCATIONSで同じ実体を指す。
• EMPLOYEEのDNOとPROJECTのDNUM
も同じものを指すが、異なる名称
• 異なる意味でも同じ名称になる可能性有り
– PROJECTとDEPARTMENTで 両方NAMEな
るアトリビュートを利用可能。
• role nameが異なる利用形態も有り
– SSNと superSSN
• Entity integrity constraint:
– No primary key value can be null
• Referential Integrity Constraint
– 意味:あるリレーションのタプルが別のリレー
ションのタプルを参照する時は、現存するタプ
ルを参照せねばならない。
– 例 EMPLOYEEリレーションのDNOは
DEPARTMENTリレーションに実在するDNO
値である必要があることを示す。
Foreign key
• A set of attributes FK in relation R1 is a foreign
key of R1 that references relation R2, if it satisfies
the following two rules.
• The attributes in FK have the same domain(s) as
the primary attributes PK of R2; the attributes FK
are said to reference or refer to the relation R2.
• A value of FK in a tuple t1 of the current state
r1(R1) either occurs as a value of PK for some
tuple t2 in the current state r2(R2) or is null. In the
former case, we have t1[FK]=t2[PK], and we say
that the tuple t1 refers to the tuple t2.
Semantic integrity constraints
• 分類
– State constraints
– Transition constraints
• State constraintsの例
– 従業員の給料はその上司の給料を超えることは無い。
– プロジェクトでの労働時間は最大X時間
• SQL
– Trigger, alerter
– CREATE ASSERTION文
1. Insert ' Cecilia' , ' F' , ' Kolonsky' , null, '1960 - 04 - 05' ,
'6357 Windy Lane, Katy, TX' , F, 28000, null, 4  into
EM PLOYEE.
2. Insert ' Alicia' , ' J' , ' Zelaya' , '999887777' , '1960 - 04 - 05' ,
'6357 Windy Lane, Katy, TX' , F, 28000, '987654321' , 4  into EM PLOYEE. 3. Insert ' Cecilia' , ' F' , ' Kolonsky' , '677678989' , '1960 - 04 - 05' ,
'6357 Windswept , Katy, TX' , F, 28000, '987654321' , 7  into EM PLOYEE.
4. Insert ' Cecilia' , ' F' , ' Kolonsky' , '677678989' , '1960 - 04 - 05' ,
'6357 Windy Lane, Katy, TX' , F, 28000, null, 4  into EM PLOYEE.